基于前面的基础部署 https://blog.csdn.net/fly0512/article/details/100863889
需要zookeeper ,部署及配置略。
主要是配置hiveserver2注册到zk,通过zk实现服务切换,不是完全严格意义的HA,当Hive存在内部错误,但是hiveserver2服务没断开的时候,会出现仍然会把无效的服务注册到zk的问题。
暂时的解决办法是:通过监控去检测Hive服务的真实状态,当检测到真实状态为故障时,将hiveserver2断开,避免jdbc通过zk调用到故障的服务。
1、配置hive-site.xml及分发各节点
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value>
<description> Let Hive determine whether to run in local mode automatically </description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
#各节点配置Mysql所在ip地址
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>qingfeng@123</value>
</property>
<!-- 显示表的列名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 显示数据库名称 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
<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>qingfeng08.net:2181,qingfeng10.net:2181,qingfeng11.net: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>
</configuration>
2、各节点启动hivemeta、hiveserver2服务
nohup hive --service metastore -p 9083 &
nohup hive --service hiveserver2 &
3、连接zk查看
./zkCli.sh -server qingfeng08.net:2181,qingfeng10.net:2181,qingfeng11.net:2181
ls /hiveserver2_zk
显示2个节点就是OK了
[serverUri=0.0.0.0:10001;version=3.1.2;sequence=0000000001, serverUri=0.0.0.0:10001;version=3.1.2;sequence=0000000003]
4、beeline连接测试
./beeline
!connect jdbc:hive2://qingfeng08.net:2181,qingfeng10.net:2181,qingfeng11.net:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk user ""