hiveserver2的高可用HA

  • 1. 架构原理介绍
  • 2.配置
  • 3. 检验是否在zookeeper上注册
  • 4. 测试连接JDBC
  • 5. beeline连接
  • 6. 测试

1. 架构原理介绍

hiveserver2的高可用HA_第1张图片

这里最主要的是利用了zk的命名空间,首先我们把两个hiserver2先后启动,注册到zk集群的,然后通过zk轮询做高可用,就是这么简单,下边详细讲解一下,安装配置

第一步 在两台节点上安装hive,除了配置的ip不同,其他的都相同,并在hive-site.xml中添加如下配置

2.配置


<property>
    <name>spark.deploy.recoveryModename>
    <value>ZOOKEEPERvalue>
property>



<property>
<name>hive.server2.support.dynamic.service.discoveryname>
<value>truevalue>
property>


<property>
<name>hive.zookeeper.quorumname>
<value>node5:2181,node4:2181,node3:2181value>
property>



<property>
<name>hive.server2.thrift.bind.hostname>
<value>0.0.0.0value>
property>


<property>
<name>hive.server2.thrift.portname>
<value>10001value> //两个HiveServer2实例的端口号要一致
property>

然后保存文件

3. 检验是否在zookeeper上注册

先启动第一部需要服务高可用的主机上的HiveServer2服务

sh   $HIVE_HOME/bin/hiveserver2

hiveserver2的高可用HA_第2张图片

再启动第二部需要服务高可用的主机上的HiveServer2服务

sh   $HIVE_HOME/bin/hiveserver2

这里写图片描述

确认端口是否监听 netstat -lnp | grep 10000 ,默认端口是10000

4. 测试连接JDBC

JDBC连接的URL规范:

jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=nameSpace

语法解析

                     # 为Zookeeper的集群链接串,如node5:2181,node4:2181,node3:2181
                               # 为Hive数据库(可不填, 默认为default)
serviceDiscoveryMode=zooKeeper         # 指定模式为zooKeeper
zooKeeperNamespace=nameSpace           # 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,在hive-site.sh中定义为hiveserver2_zk

5. beeline连接

测试连接:
(1)启动beeline服务:

sh  $HIVE_HOME/bin/beeline

(2)在beeline中输入以下连接指令:

!connect jdbc:hive2://node5:2181,node4:2181,node3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk

或者

beeline -u "jdbc:hive2://node5:2181,node4:2181,node3:2181/ding;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk" -nhadoop -phadoop123$
  1. beeline -u就不解释了
  2. node5:2181,node4:2181,node3:2181 表示zk集群的连接信息
  3. ding 表示要连接的hive库
  4. serviceDiscoveryMode=zooKeeper 表示指定hiveserver连接模式为zookeeper连接
  5. zooKeeperNamespace=hiveserver2_zk指定配置文件中的命名空间
  6. -nhadoop 表示当前用户用hadoop用户连接beeline
  7. -phadoop123$ 表示当前用户的密码(这里beeline的权限认证使用的是自定义的权限控制)

然后进入客户端进新房操作

(3)如没使用HiveServer2服务高可用是,则连接beeline使用下列指令:

!connect jdbc:hive2://m1

6. 测试

我们杀了了其中一个hiveserver2,比如hiveserver2-1,然后还可以请求,多次测试可以使用

参考:

https://blog.csdn.net/dingyanming/article/details/78606971
https://blog.csdn.net/suifeng3051/article/details/49508261

你可能感兴趣的:(大数据-hive)