在啓用了HDFS HA的集羣,2個NameNode節點上一般都會部署三個角色:NameNode,JournalNode和Failover Controller。在實際生產中,我們有時會碰到一個情況,你不小心刪掉了某個NameNode節點上的所有角色包括NameNode,JournalNode和Failover Controller,或者你不小心通過Cloudera Manager直接從主機管理列表裏移除了該NameNode節點,然後你想再把這個節點加回去的時候,發現無論如何HDFS服務都沒辦法正常使用了。本文會在一個HDFS HA的CDH集羣中模擬這種情況,然後嘗試去解決,即先刪除一個NameNode,然後如何通過配置將該NameNode重新加回到HDFS服務中。
- 測試環境
1.CDH6.1
2.Redhat7.4
3.採用root進行操作
2
模擬異常
1.首先Fayson準備一個正常的CDH6.1的集羣,並且HDFS已經啓用了HA。
2.我們停止ip-172-31-9-113.ap-southeast-1.compute.internal節點上的NameNode,JournalNode和Failover Controller服務。
3.刪除這三個角色,注意下表已經少了這三個角色。
4.這時HDFS服務直接報錯了。
3 個驗證錯誤。
Quorum Journal 需要至少三個 JournalNode
Quorum Journal 需要奇數的 JournalNode
Nameservice nameservice1 has no SecondaryNameNode or High-Availability partner
1 個驗證警告。
在 NameNode (ip-172-31-6-83) 個非 HA Nameservice nameservice1 上啓用自動故障轉移不起作用。
故障修復方法1
1.我們選擇HDFS服務,然後點擊“操作”,發現雖然是HDFS HA的集羣,操作列表顯示卻是“啓用High Availability”,實際應該是“禁用High Availability”,應該是因爲手動刪除了一個NameNode後引起的。
2.我們先嚐試點擊該按鈕,嘗試重新啓用HDFS的HA。
這裏我們選擇之前的刪掉的NameNode和JournalNode節點
ip-172-31-9-113.ap-southeast-1.compute.internal
報錯,啓用失敗,實際其實我們已經選擇了三個JournalNode,但仍舊報錯需要3個JournalNode,返回,我們繼續嘗試。
故障修復方法2 --我用的該方法直接把誤刪的namenode加上去修改配置重啓即可
1.從以下界面把刪掉的NameNode,JournalNode和Failover Controller的三個角色再給加回去。
2.點擊添加角色實例,並相應的選擇之前刪掉NameNode,JournalNode和Failover Controller角色所在的主機ip-172-31-9-113.ap-southeast-1.compute.internal
3.點擊“繼續”
4.點擊“完成”
5.直接重啓HDFS服務,嘗試拉起剛剛新加的三個角色
還是失敗。
6.進入ip-172-31-9-113.ap-southeast-1.compute.internal節點所在的NameNode配置頁面。
選擇“配置”標籤頁
在“NameNode Nameservice”配置項中輸入nameservice1,這裏根據你集羣啓用HA後的實際情況nameservice的名字輸入,然後保存。
7.在“Quorum Journal 名稱”配置項也輸入nameservice1,這裏根據你集羣啓用HA後的實際情況nameservice的名字輸入,然後保存。
8.勾選“啓用自動故障轉移”,然後保存。
9.回到HDFS服務的實例頁面,發現之前的錯誤已經消失了。
10.回到CM主頁重新部署客戶端,並重啓集羣所有服務。
重啓成功,集羣恢復正常。
我這邊參照方法2解決後的測試:
測試hive
測試sqoop
一切正常!