hive:对数据的处理

hive:对数据的处理(客户端)

hive是将类sql(HQL)语句转换成功 mapreduce程序执行的(默认,还可以将hql语句转换为spark程序处理)。
所以hive会将要处理的数据和表、数据库、字段做一个映射(hive的元数据),hive元数据的保存方式就决定了hive的运行、安装模式。

hive的安装使用,hive安装模式:

1. 嵌入模式:hive自带有 Derby 数据库用来存储元数据。Derby数据有两个问题:
			a. 同时只允许一个客户端连接
			b. Derby数据库属于内存数据库,会在运行的时候在启动目录下生成一个 配置文件,如果下次使用的时候不在原来的目录中启动,就会造成原来创建的数据库、表等内容找不到
2. 本地模式:将hive元数据使用外部的数据库存储。一般在本地安装MySQL,使用mysql来存储hive元数据(MariaDB是MySQL的分支,使用和MySQL类似,安装过程中会更简单)
3. 远程模式:将hive元数据保存在远程服务器上(不在当前电脑上)

虚拟机网络连接

在安装MariaDB的时候,需要虚拟机能够连接外网。
VMware中点击 【编辑】 菜单---》【虚拟网络编辑器】
选中 vmnet8 网卡,点击 【NAT设置】
	配置:
		默认网关:192.168.137.2
		主机端口: 5000
		类型:TCP
		虚拟机IP:192.168.137.1
		虚拟机端口号:50000
在虚拟机中,查看虚拟机的默认网关是否为 192.168.137.2
vim  /etc/sysconfig/network-scripts/ifcfg-ens33 
查询文件中 `GATEWAY` 的值是否为: 192.168.137.2
如果不是,就修改为默认网关。修改之后,需要重新启动网卡:
	service network restart
网卡启动之后,再次通过 ping 8.8.8.8  和 ping  www.baidu.com 来测试是否可以连接到外网。

MariaDB的安装:

1. 通过 yum -y install mariadb* 安装mariaDB
2. 安装成功之后,启动mariadb服务:
	systemctl start mariadb.service
3. 设置mariadb开机启动
	systemctl enable mariadb.service
4. mariadb初始化设置
	mysql_secure_installation 

初始化设置是,需要注意以下几个地方

Enter current password for root (enter for none):	<------ 直接回车
Set root password? [Y/n]   <-----    是否设置root用户的密码 输入 Y
New password:		<-------root用户的密码,这里介意大家使用  root
Re-enter new password:  <----- 再次输入root用户密码    root
Remove anonymous users? [Y/n]   <----- 是否删除匿名用户   直接回车
Disallow root login remotely? [Y/n]	<---- 是否禁止root用户远程登录   输入 n
Remove test database and access to it? [Y/n]  <----- 是否删除test数据库   直接回车
Reload privilege tables now? [Y/n]   <----- 是否重新加载权限   直接回车
5. 登录mariadb测试:
		mysql -u root -p
		Enter password:			<------  输入root用户密码  root
此时标识mariadb安装成功。

Hive安装:

1. 上传安装包
	使用xftp 将hive-2.3.5-bin.tar.gz 上传到 Linux的 /opt 目录下
2. 解压并配置环境变量
	进入到 /opt 目录下:
		cd  /opt
	解压hive:
		tar -zxf apache-hive-2.3.5-bin.tar.gz -C ./
	解压完成之后,会生成一个 apache-hive-2.3.5-bin
	解压目录名称较长,重命名为hive-2.3.5:
		mv  apache-hive-2.3.5-bin hive-2.3.5

环境变量配置,在 /etc/profile.d/my_env.sh文件中添加如下所示的内容:

vim /etc/profile.d/my_env.sh
		文件中添加如下所示的内容:
			# 配置hive环境变量
			export HIVE_HOME=/opt/hive-2.3.5
			export PATH=$PATH:$HIVE_HOME/bin	
		保存退出。执行  
			source /etc/profile
使当前环境变量配置立即生效。

3. hive配置
hive的配置文件保存在 /opt/hive-2.3.5/conf 目录中,首先进入该配置文件所在目录中:
cd /opt/hive-2.3.5/conf

修改 hive-env.sh 文件:
			在配置文件中没有hive-env.sh 文件,有一个 hive-env.sh.template 模板文件,将模板文件拷贝为 hive-env.sh
				cp hive-env.sh.template hive-env.sh
			打开该配置文件:
				vim hive-env.sh
			在文件的末尾添加jdk、hadoop的路径:
				export JAVA_HOME=/opt/jdk1.8.0_11
				export HADOOP_HOME=/opt/hadoop-2.7.3
			保存退出。

		修改 hive-site.xml 文件:
			在配置文件目录中也没有 hive-site.xml,新建该文件:
				vim  hive-site.xml
			然后在该文件中添加如下所示的内容:
				<?xml version="1.0" encoding="UTF-8" standalone="no"?>
				<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
				<configuration>
					<!--指定MariaDB(mysql)数据库连接的驱动类、url、用户名、密码 -->
				  <property>
				    <name>javax.jdo.option.ConnectionDriverName</name>
				    <value>com.mysql.cj.jdbc.Driver</value>
				  </property>
				  <property>
				    <name>javax.jdo.option.ConnectionURL</name>
				    <value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true</value>
				  </property>
				  <property>
				    <name>javax.jdo.option.ConnectionUserName</name>
				    <value>root</value>
				  </property>
				  <property>
				    <name>javax.jdo.option.ConnectionPassword</name>
				    <value>root</value>
				  </property>

				<!--指定hive的默认工作空间:HDFS -->
				  <property>
				    <name>hive.metastore.warehouse.dir</name>
				    <value>hdfs://hadoop:9000/hive/warehouse</value>
				  </property>
				</configuration>			

			保存退出。

		导入MySQL驱动包:将MySQL的驱动 8.x 导入hive的lib 目录中(保存hive运行时需要所有jar)

4. 初始化hive元数据库


		schematool -dbType mysql -initSchema
		初始化成功之后,会显示:
			schemaTool completed

		如果初始化过程中,出现错误,主要去检查MySQL连接中的驱动类、url、用户名、密码和驱动包是否导入。

5. 启动、测试、暂停


		因为hive会将hql语句转换为 mapreduce程序执行,此外在配置,将hive的默认工作空间配置到hdfs中,所以可以理解hive的运行需要hadoop的支持。
		所以在启动hive之前需要先启动hadoop(hdfs+YARN)
			start-all.sh   		启动hadoop
		hadoop启动成功之后,通过 hive  指令启动hive。
			hive> 			表示hive启动成功,通过jps指令查询时,会出现一个runjar进程,这就是hive的进程(但是需要注意一点,runjar进程不表示一定就是hive进程)。

		此时就可以在命令行通过 hql 语句 进行操作了。

		测试:
			测试数据:
				在Linux的root目录下,新建stu.txt文件,文件内容如下:
				1,zs,12,90
				2,ls,13,99
				3,ww,14,89
				4,zl,15,92

			现在hive中创建对应数据库:test
				hive> create database test;
			在test数据库下,创建对应的stu表:
				hive> use test;
				hive> create table stu(
				    > id int,
				    > name string,
				    > age int,
				    > score int)row format delimited fields terminated by ',';
			将stu.txt文件,导入到test数据库下的stu表中。
				hive> load data local inpath '/root/stu.txt' into table test.stu;
				Loading data to table test.stu
				OK
			查询当前表中又多少条记录:
				select count(1) from test.stu;
			该语句会触发mapreducec任务。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值