1 部署启动hiveserver2
1.1 配置hive-site.xml
利用Xshell工具连接虚拟机
进入hive安装目录下的conf文件夹,更改hive-site.xml配置文件其中的配置hive-site.xml
你会发现/usr/hive/apache-hive-2.3.3-bin/conf/并没有hive-site.xml文件直接新建一个就行
[root@master hive]# cd apache-hive-2.3.3-bin/conf/ #创建文件 [root@master conf]# touch hive-site.xml #编辑 [root@master conf]# vim hive-site.xml
在hive-site.xml中写入
ip改为自己的
<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.134.154:3306/hive</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>root</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <!-- 这是hiveserver2 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>192.168.134.154</value> </property> </configuration>
1.2 配置hadoop中的core-site.xml文件
进入到hadoop的安装目录下的etc/hadoop文件夹,配置其中的core-site.xml文件
注意:如果是hadoop集群而不是单机版,需要更改所有虚拟机上的core-site.xml文件
在最后追加
<!-- 如果连接不上10000 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.zhaoshb.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.zhaoshb.groups</name> <value>*</value> </property>
1.3 测试
首先启动你集群中的Zookeeper和Hadoop
然后在安装hive的主机上启动hiveserver2
因为配置好了hive的环境变量.所以我们可以直接在任何文件夹下运行
不然的话需要进到hive安装目录的bin下
[root@master ~]# hiveserver2 #或者 [root@master ~]# hive --service hiveserver2 123
这个时候你的页面会一直卡在这里,这是正常的,因为你是启动了一个服务
你只需要再开一个Xshell窗口连接即可
在新开的窗口操作
#进入beeline [root@master ~]# beeline #连接10000端口 beeline> !connect jdbc:hive2://192.168.134.154:10000 Connecting to jdbc:hive2://192.168.134.154:10000 Enter username for jdbc:hive2://192.168.134.154:10000: root #用户名root Enter password for jdbc:hive2://192.168.134.154:10000: **** #密码root
然后使用浏览器在你的192.168.134.154(安装hive的主机ip地址):10002查看
接下来可以在hiveserver2中操作,基本操作和hive中一样
0: jdbc:hive2://192.168.134.154:10000> show databases; +----------------+ | database_name | +----------------+ | default | +----------------+ 1 row selected (2.51 seconds)
2 高可用部署
2.1 hive-site.xml添加配置
<property> <name>hive.server2.support.dynamic.service.discovery</name> <value>true</value> </property> <property> <name>hive.server2.zookeeper.namespace</name> <value>hiveserver2_zk</value> </property> <property> <name>hive.zookeeper.quorum</name> <value>zkNode1:2181,zkNode2:2181,zkNode3:2181</value> </property> <property> <name>hive.zookeeper.client.port</name> <value>2181</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>0.0.0.0</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10001</value> <!--//两个HiveServer2实例的端口号要一致 --!> </property>
2.2 Hiveserver2启动
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 \ --hiveconf hive.metastore.uris='thrift://192.168.1.252:9083,thrift://192.168.1.253:9084' \ --hiveconf hive.server2.zookeeper.namespace=hiveserver2/lenmom--hiveconf hive.log.dir=/hive/logs/server2_10001 \ --hiveconf hive.exec.scratchdir=/user/lenmom/tmpdata &
参数说明:
a) hiveserver2端口:10001
b) metastore的uri:thrift://192.168.10.34:9083,thrift://192.168.10.35:9084,
c) hiveserver2的轮询分组命名空间:hiveserver2/lenmom
d) 日志目录:/hive/logs/server2_10001
e) 临时文件目录:/user/lenmom/tmpdata
2.3 jdbc连接hive server方式
JDBC Url
jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
参数说明
a) 为Zookeeper的集群链接串,如zkNode1:2181,zkNode2:2181,zkNode3:2181
b) 为Hive数据库,默认为default
c) serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
d) zooKeeperNamespace=hiveserver2 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,我定义为hiveserver2_zk
2.4. 客户端轮询方式连接
beeline -u "jdbc:hive2://jfhadoop005:9501,jfhadoop006:9501,jfhadoop007:9501/ssjf;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2/lenmom;?mapreduce.job.queuename=root.ssfj" -n lenmom -plenmom -d org.apache.hive.jdbc.HiveDriver
参数说明:
-u
jfhadoop005:9501 三个zk的9501端口,轮询用
lenmom 租户对应的hiveserver库
serviceDiscoveryMode=zooKeeper; zk轮询发现hs2
zooKeeperNamespace=hiveserver2/lenmom 轮询的命名空间,指定轮询服务器的范围 和 hiveserver2的轮询分组命名空间对应。
?mapreduce.job.queuename=root.lenmom 对照的yarn资源分组队列
-n 多租户用户名
-p 多租户用户密码
-d org.apache.hive.jdbc.HiveDriver hive连接驱动
2.5 客户端直连方式连接
beeline -u "jdbc:hive2://192.168.1.252:10000/lenmom" -n lenmom -p lenmom -d org.apache.hive.jdbc.HiveDriver
参数说明:
hs2地址和端口:192.168.10.32:10000
lenmom 租户对应的hiveserver库
-n 多租户用户名
-p 多租户用户密码
-d org.apache.hive.jdbc.HiveDriver hive连接驱动