hiveserver2 的HA 配置

1、作用

如果只是使用一臺服務來啓動hiveserver2,那麼如果hiveserver2掛掉便不能提供jdbc的支持。hive 支持hiveserver2 HA,用於進行負載均衡和高可用
Hive從0.14開始,使用Zookeeper實現了HiveServer2的HA功能,Client端可以通過指定一個nameSpace來連接HiveServer2,而不是指定某一個host和port。

2、具體配置

具體配置如下 (在hive-site.xml中或者hiveserver2-site.xml 進行配置,這裏注意 如果你在hiveserver2-site.xml 和hive-site.xml 均配置了一個參數,hiveserver2-site.xml將會覆蓋hive-site.xml中的參數)

<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>  //設置爲true(默認爲false),以便爲其客戶端啓用HiveServer2動態服務發現
</property>
 
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>   //這個是在zookeeper的目錄(存儲hiverserver2多個服務的信息)
</property>
 
<property>
<name>hive.zookeeper.quorum</name>
<value>shujuyun01:2181,shujuyun02:2181,shujuyun03: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>10000</value> //兩個HiveServer2實例的端口號要一致
</property>

3、啓動

啓動一個服務的hiverserver2

nohup hive --service hiveserver2 > /opt/beh/logs/hive/hiveserver2.log 2>&1 &

查看日誌和端口,是否正常啓動,啓動正常進入zookeeper Cli,查看在hiveserver2_zk 下面右面有相關節點的信息,

[zk: shujuyun01-cuidong:2188(CONNECTED) 2] ls /hiveserver2_zk
[serverUri=shujuyun02-cuidong.novalocal:10000;version=2.3.3;sequence=0000000014]

再啓動另外一個hiveserver2,啓動成功發現 (多了一個hiveserver2的註冊信息)

[zk: shujuyun01-cuidong:2188(CONNECTED) 2] ls /hiveserver2_zk
[serverUri=shujuyun02-cuidong.novalocal:10000;version=2.3.3;sequence=0000000014, serverUri=shujuyun01-cuidong.novalocal:10000;version=2.3.3;sequence=0000000017]

由此可以發現
其實就是將多個hiveserver2的服務信息註冊到zookeeper,然後當請求來的時候輪詢獲取url信息,來達到高可用和負載均衡的效果。

4、連接

編寫JDBC url 嘗試使用beeline 訪問

/opt/beh/core/hive/bin/beeline -u “jdbc:hive2://shujuyun01-cuidong:2188,shujuyun02-cuidong:2188,shujuyun03-cuidong:2188/zgh;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章