天天看點

HiveHA機制源碼分析

hive讓大資料飛了起來,不再需要專人寫MR。平常我們都可以用基于thrift的任意語言來調用hive。

不過愛恨各半,hive的thrift不穩定也是出了名的。很容易就出問題,讓人無計可施。唯一的辦法就是不斷kill,不斷restart。

當然,我們可以用haproxy來解決這個問題,關鍵,haproxy不管hive是否邏輯可用,不能執行邏輯的hive也“死馬當活馬”。

當然,搞的好的可以用 zookeeper,不過,它太“重”,而且不管hive的重新開機。

         Hive HA橫空出世。隻要指明它可以管理的伺服器ip,端口,啟動一個主要伺服器,在其他伺服器上啟動節點服務,它就一切搞定。

        Hive HA原理是:

       将若幹hive 執行個體納入一個資源池,然後對外提供一個唯一的接口,進行proxy relay。

      對于程式開發人員,就把它認為是一台超強“hive"就可以。每次它接收到一個HIVE查詢連接配接後,都會輪詢資源池裡可用的hive 資源。

這樣,能充分使用每個hive server,減少壓力。在拿到hive 連接配接後,Hive HA會首先進行邏輯可用測試,這個邏輯規則可自行配置。

      如果邏輯可用,則直接把用戶端的HIVE 查詢連接配接 relay到該hive server。

     若邏輯不可用,則将該hive server放入黑名單,然後繼續讀取池裡其他hive server進行連接配接測試。

    Hive Ha每隔一段時間(可配置),對黑名單中的hive server進行處理,通過和節點管理伺服器通訊,重新開機該hive server。如果

重新開機後可用,則将該hive從黑名單中移除,加入資源池。

繼續閱讀