HIVE -- unable to read hiveserver2 configs zookeeper(開啟ranger)

hive 通過beeline 連接 hive報錯unable to read hiveserver2 configs zookeeper:
首先會在zookeeper里面創(chuàng)建一個namespace:并創(chuàng)建hiveserver2 znode。

image.png

可以看到是serverUri開頭的幾個節(jié)點(diǎn)。
此時用客戶端(如beeline)連接hs2時,url需使用
jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
此時zk會隨機(jī)從多個實例中隨機(jī)拿一個實例供連接使用,過程在代碼中體現(xiàn)如下:
image.png

先去指定的znode(/hiveserver2)下拿到所有實例,再通過Random隨機(jī)拿其中一個去連接;也正因為這個隨機(jī)的過程,此種方式的hs2高可用一定程度上實現(xiàn)了hiveserver2的負(fù)載均衡。
關(guān)于/hiveserver2下的leader節(jié)點(diǎn)如何產(chǎn)生:
當(dāng)你同時開啟了鑒權(quán)的服務(wù)(如ranger),hs2在啟動時不僅會注冊hs2的實例,還會注冊一個leader節(jié)點(diǎn),因為leader節(jié)點(diǎn)的存在,使上面講的隨機(jī)拿的過程中就可能會拿到這個leader節(jié)點(diǎn),而該節(jié)點(diǎn)實際不是有效的hs2實例,故此時連接會報錯“Unable to read HiveServer2 configs from ZooKeeper”.
鑒權(quán)模型不為null:
image.png
image.png
導(dǎo)致zk 隨機(jī)節(jié)點(diǎn)出錯。
這個leader節(jié)點(diǎn)是有作用的:hiveserver2有高可用模式,ActivePassiveHA,此時leader節(jié)點(diǎn)才會發(fā)揮作用,但是hiveserver2實例之間并沒有namenode那種主備的必要性,ActivePassiveHA是使用leader來實現(xiàn)active的作用,并且沒有具體的實踐案例,此處選擇在hive隨機(jī)znode時過濾leader節(jié)點(diǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容