Hive HA
hive讓大數(shù)據(jù)飛了起來,不再需要專人寫MR。平常我們都可以用基于thrift的任意語言來調(diào)用hive。
不過愛恨各半,hive的thrift不穩(wěn)定也是出了名的。很容易就出問題,讓人無計(jì)可施。唯一的辦法就是不斷kill,不斷restart。當(dāng)然,我們可以用haproxy來解決這個(gè)問題,關(guān)鍵,haproxy不管hive是否邏輯可用,不能執(zhí)行邏輯的hive也“死馬當(dāng)活馬”。當(dāng)然,搞的好的可以用 zookeeper,不過,它太“重”,而且不管hive的重啟。
Hive HA橫空出世。只要指明它可以管理的服務(wù)器ip,端口,啟動(dòng)一個(gè)主控服務(wù)器,在其他服務(wù)器上啟動(dòng)節(jié)點(diǎn)服務(wù),它就一切搞定。
Hive HA原理是:
將若干hive 實(shí)例納入一個(gè)資源池,然后對(duì)外提供一個(gè)唯一的接口,進(jìn)行proxy relay。
對(duì)于程序開發(fā)人員,就把它認(rèn)為是一臺(tái)超強(qiáng)“hive"就可以。每次它接收到一個(gè)HIVE查詢連接后,都會(huì)輪詢資源池里可用的hive 資源。這樣,能充分使用每個(gè)hive server,減少壓力。在拿到hive 連接后,Hive HA會(huì)首先進(jìn)行邏輯可用測(cè)試,這個(gè)邏輯規(guī)則可自行配置。 如果邏輯可用,則直接把客戶端的HIVE 查詢連接 relay到該hive server。 若邏輯不可用,則將該hive server放入黑名單,然后繼續(xù)讀取池里其他hive server進(jìn)行連接測(cè)試。 Hive Ha每隔一段時(shí)間(可配置),對(duì)黑名單中的hive server進(jìn)行處理,通過和節(jié)點(diǎn)管理服務(wù)器通訊,重啟該hive server。如果重啟后可用,則將該hive從黑名單中移除,加入資源池。
