CDH集群主節點宕機恢復


1       情況概述

公司的開發集群在周末莫名其妙的主節點Hadoop-1的啟動固態盤掛了,由於CM、HDFS的NameNode、HBase的Master都安裝在Hadoop-1,導致了整個集群都無法使用,好在數據不在啟動盤。

Hadoop-1的系統必須重裝,但是不能重裝集群,因為要將之前的數據全部保留恢復,所以只能通過集群恢復的手段將集群重新跑起來。

主要服務角色安裝情況:

Hadoop-1:

 CM,HDFS( NN,DN ),HBase(HMaster, RegionServer),YARN(NM),Zookeeper

Hadoop-2:

HDFS( SNN,DN ),HBase(HMaster, RegionServer),YARN(RM,NM),Zookeeper

Hadoop-3,Hadoop-4:

HDFS( DN ),HBase(RegionServer),YARN(NM),Zookeeper

 

說明:在寫本文檔的時候,出現此問題的研發集群已經恢復完成,但是很遺憾沒有留下證據,所以這里利用了一個臨時的集群重現該問題,並執行恢復

2       面臨的問題

  1. Hadoop-1系統重裝后CM必須得重裝,那么怎么將其余好的節點重新加入到新的CM。
  2. 新建的NameNode怎么重新使用原來的NameNode的數據,怎么重新管理其余結點的DataNode。

3       恢復記錄

3.1   重裝系統

最小化安裝CentOS 64位系統,

准備好基礎環境,恢復到和原來的Hadoop-1一樣。

注意要點:

  1. 重新配置Hosts
  2. 重新配置ssh的無密鑰登錄。
  3. 重新配置時鍾服務
  4. 重新配置CentOS,及CM、CDH的網絡鏡像源
  5. 掛載數據盤到原來的位置

3.2   重裝CM

在Hadoop-1中利用CM的引導文件cloudera-manager-installer.bin重裝CM服務,剩下的就是界面操作。前面的步驟和搭建新集群一樣,以下為截圖:

1.

 

在到這個界面之前的步驟和安裝全新集群基本一樣的,因此之前的步驟參照集群搭建文檔即可,重點就是這個圖,這個地方是選擇服務角色的安裝主機,一定要和之前的集群保持一致

 

上面這張圖是更改后的,根據原來的集群,NameNode在test-hadoop-1上,而SNN在test-hadoop-2上面,每個節點都存在DataNode,至於HBase的配置還是理論上說可以隨意(因為它的數據是在HDFS和Zookeeper上只要它倆對了,HBase的數據自然就恢復了。),但是還是建議和原來的保持一致。

Zookeeper要保持和原來一致。

 

Yarn主要用於計算,其實也可以是隨意的,但是它有NM,所以還是建議保持和原來一致

CM,Spark可以配置是可以隨意的,因為這兩個東西跟我們的數據沒太大關系。

接着往下走,

要是安裝了要是原來的集群的自定義數據庫不再主節點上,則直接在這里指過去使用原來的數據庫,否則直接聯本地的。

接着往下走,

 

這一步是重中之重,一定要注意將數據目錄指定到原來的集群的數據目錄,保持高度一致,對應修改完就可以啟動了。

 

啟動后HDFS報錯,因為NameNode會去嘗試format,但是已經有數據了,所以format失敗,那么基本上意味着我們數據恢復成功80%了,我們進入CM的控制界面,重啟所服務,要是不出意外,集群修復就完成了。

 

4       可能的錯誤

 

4.1   Zookeeper

若啟動時報zookeeper啟動異常,

完整日志如下:

 

 

這個錯是個很奇怪的錯,只發生在新建的主節點上,是因為掛載原來的數據盤時,原來的目錄及文件的用戶及用戶組發生了變化,如下:

新建的主節點test-hadoop-1:

原來的數據結點test-hadoop-2:

 

 

可以看到在新建的主節點test-hadoop-1中zookeeper的用戶和用戶組都成了solr,我們只需要將其修改過來就好了。

再次啟動zookeeper若報如下錯誤:

則在對應的節點重啟CM的agent

再次啟動zookeeper:

其他的權限錯誤,就不再說了,對照着改就好了。

 

5       總結

通過這次集群恢復,有以下幾點收獲,

    1. CM搭建的Hadoop集群中服務和數據是分離的,就算是搭建一個全新的集群,只要將數據目錄指定到原來的目錄,就可以使用原來的數據。(按理說所有Hadoop集群都是這樣。)
    2. 要大膽嘗試。因為之前想到集群的主節點都掛了,無法避免重新搭建,數據只能全清空,迫於數據的重要性,在測試集群試驗了把新搭集群但是數據目錄還是原來的,發現hdfs,hbase,kafka,zookeeper的數據都還是原來的,並沒有置空。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM