1. 程式人生 > >zookeeper 災難恢復機制

zookeeper 災難恢復機制

1: HDFS 的nameNode 出現問題, 單點問題。
https://issues.apache.org/jira/secure/attachment/12480378/NameNode+HA_v2.pdf
2: hdfs datanode 出現問題,將由hadoop hdfs 的叢集解決
3: zookeeper出現問題,將由zookeeper的叢集機制解決
4: hmaster出現問題.將由backup-masters中的一臺backup-master按管hmaster.
由於master只維護表和region的元資料,而不參與表資料IO的過程,master下線僅導致所有元資料的修改被凍結(無法建立刪除表,無法修改表的schema,無法進行region的負載均衡,無法處理region上下線,無法進行region的合併,唯一例外的是region的split可以正常進行,因為只有region server參與),表的資料讀寫還可以正常進行。因此master下線短時間內對整個hbase叢集沒有影響。從上線過程可以看到,master儲存的資訊全是可以冗餘資訊(都可以從系統其它地方收集到或者計算出來),因此,一般hbase叢集中總是有一個master在提供服務,還有一個以上的’master’在等待時機搶佔它的位置。
5: HregionServer 出現問題:
  5.1: 沒有儲存-ROOT-,和.META.的 HregionServer出現問題。 在zookeeper中代表自己的/hbase/rs/xxx的檔案將會刪除。hmaster偵聽這個,得到這臺hregionserver死了。然後查詢.META.表,他管理那些table的region,重新把這些分配給活著的同事。同時通過master找到歸這臺機管的HLOG, 對這個hlog按region進行split,split後的hlog檔案將由得到重新分配到region的hregionserver進行認領,認領之後裝載到各個region的Memstore中,完成。
 5.2: 如果是存.META.的機出現問題,先查詢-ROOT-表,看那些.META.的region分配在這臺機上,先把這些region分配給正常的同志。.META.完全恢復後,再在.META.表中查在這強宕機上是否還有其它region,有與5.1相同
 5.3: 儲存-ROOT-表的那個region的hregionserver出了問題。master必須在活著同志找一臺機,把他註冊到/hbase/root-region-server,並按管-ROOT- hregionserver的責任,其它與5.2一致