目录
技术连载系列,前面内容请参考前面连载4内容:Kerberos安全认证-连载4-大数据技术组件之搭建HDFS HA集群_IT贫道的博客-CSDN博客
1. 节点划分
这里搭建Hive的版本为3.1.3,搭建Hive的节点划分如下:
节点IP | 节点名称 | Hive服务器 | Hive客户端 | MySQL |
192.168.179.4 | node1 | ★ | ||
192.168.179.5 | node2 | ★(已搭建) | ||
192.168.179.6 | node3 | ★ |
2. 安装配置Hive
1) 将下载好的Hive安装包上传到node1节点上,并修改名称
apache-hive-3.1.3-bin.tar.gz下载地址:https://download.csdn.net/download/qq_32020645/87868049
[root@node1 ~]# cd /software/ [root@node1 software]# tar -zxvf ./apache-hive-3.1.3-bin.tar.gz [root@node1 software]# mv apache-hive-3.1.3-bin hive-3.1.3 |
2) 将解压好的Hive安装包发送到node3节点上
[root@node1 software]# scp -r /software/hive-3.1.3/ node3:/software/ |
3) 配置node1、node3两台节点的Hive环境变量
vim /etc/profile export HIVE_HOME=/software/hive-3.1.3/ export PATH=$PATH:$HIVE_HOME/bin #source 生效 source /etc/profile |
4) 在node1节点$HIVE_HOME/conf下创建hive-site.xml并配置
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> </configuration> |
5) 在node3节点$HIVE_HOME/conf/中创建hive-site.xml并配置
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.metastore.local</name> <value>false</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property> </configuration> |
6) node1、node3节点删除$HIVE_HOME/lib下“guava”包,使用Hadoop下的包替换
#删除Hive lib目录下“guava-19.0.jar ”包 [root@node1 ~]# rm -rf /software/hive-3.1.3/lib/guava-19.0.jar [root@node3 ~]# rm -rf /software/hive-3.1.3/lib/guava-19.0.jar #将Hadoop lib下的“guava”包拷贝到Hive lib目录下 [root@node1 ~]# cp /software/hadoop-3.3.4/share/hadoop/common/lib/guava-27.0-jre.jar /software/hive-3.1.3/lib/ [root@node3 ~]# cp /software/hadoop-3.3.4/share/hadoop/common/lib/guava-27.0-jre.jar /software/hive-3.1.3/lib/ |
7) 将“mysql-connector-java-5.1.47.jar”驱动包上传到$HIVE_HOME/lib目录下
这里node1,node3节点都需要传入,将mysql驱动包上传$HIVE_HOME/lib/目录下。
8) 在node1节点中初始化Hive
#初始化hive,hive2.x版本后都需要初始化 [root@node1 ~]# schematool -dbType mysql -initSchema |
3. HiveServer2与Beeline
Hive Beeline 是Hive0.11版本引入的新命令行客户端,它是基于SQLLine Cli的JDBC客户端。Beeline工作模式有两种,即本地嵌入模式和远程模式。嵌入模式情况下,它返回一个嵌入式的Hive(类似于Hive CLI)。而远程模式则是通过Thrift协议与某个单独的HiveServer2进程进行连接通信。
想要通过Beeline写SQL查询Hive数据,必须配置HiveServer2服务,HiveServer2(HS2)是一种使客户端能够对Hive执行查询的服务。HiveServer2是已被废弃的HiveServer1(仅支持单客户端访问)的继承者。HiveServer2支持多客户端并发和身份验证。它旨在为JDBC和ODBC等开放API客户端提供更好的支持。
通过beeline和Hiverserver2连接操作Hive时,需要指定一个用户,这个用户可以随意指定,但是需要在HDFS中允许使用代理用户配置,需要在每台Hadoop 节点配置core-site.xml:
<!-- 配置代理访问用户 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.users</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> |
配置好完成之后,将以上文件分发到各个hadoo节点上,然后重新启动HDFS。
4. Hive 操作
1) 服务端和客户端client操作
在服务端和客户端操作Hive,操作Hive之前首先启动HDFS集群,命令为:start-all.sh,启动HDFS集群后再进行Hive以下操作:
#在node1中登录Hive ,创建表test [root@node1 conf]# hive hive> create table test (id int,name string,age int ) row format delimited fields terminated by '\t'; #向表test中插入数据 hive> insert into test values(1,"zs",18); #在node1启动Hive metastore [root@node1 hadoop]# hive --service metastore & #在node3上登录Hive客户端查看表数据 [root@node3 lib]# hive hive> select * from test; OK 1 zs 18 |
2) 本地嵌入模式使用Beeline
首先在Hive服务端node1启动HiverServer2,然后在node1上可以直接登录beeline,操作如下:
#在node1 Hive服务端启动hiveserver2 [root@node1 ~]# hiveserver2 #在node1 Hive服务端进行操作 beeline beeline> !connect jdbc:hive2://mynode1:10000 随意输入用户名和密码即可 |
另外也可以使用另外一种方式登录beeline:
beeline -u "jdbc:hive2://node1:10000" |
3) 远程模式使用Beeline
在实际开发中建议远程模式使用beeline,这样并不是在Hive的服务端进行操作,比较安全。远程使用beeline就是直接找到Hive的客户端然后启动beeline,前提是需要在Hive的服务端启动Hiveserver2服务,这种情况下客户端的beeline是通过Thrift协议与服务端的HiveServer2进程进行连接通信。
#在node1节点上启动HiveServer2,如启动可以忽略 [root@node1 ~]# hiveserver2 #在node3客户端登录beeline,然后可以正常查询SQL语句 [root@node1 ~]# hiveserver2 beeline beeline> !connect jdbc:hive2://mynode1:10000 |
欢迎点赞、评论、收藏,关注IT贫道,获取IT技术知识!