Hadoop HA:active節點失效后standby 節點無法被拉起

被這個問題困擾很久,網上也查不到類似的問題;因此記錄下來希望幫到其他小伙伴

當然也是因為我話多/困擾太久/解決后太興奮/想嘚瑟/想鍛煉下表述能力/加深理解/整理思路/記性太差怕忘記等諸多原因。。。

第一次寫,寫得不好還請見諒(當然這是我的托辭,下次要是還寫不好我也能找出其他理由)

另外,如果有錯誤或表述不清的地方還請指正;


所以我們現在開始正題:


hadoop集群結構:

Cluser結構;兩臺namenode;一主一備

使用JournalNode+zookeeper(※)實現HA

※:

JournalNode:

用于同步namenode(active&standby)間的數據;

Zookeeper:

用于監控namenode狀態;若發現active節點異常;則將standby狀態切換到active狀態


錯誤現象:

將主備namenode都啟動;kill掉active機上的namenode進程后;standby主機的狀態并沒有變成active

即active節點崩壞后,standby并沒有被自動切換為active


調查過程:

首先想到可能是負責實現HA的以下兩個應用出了問題:

1)JournalNode(比如某些原因導致standby無法獲得active的數據)

2)Zookeeper

于是清空hadoop安裝目錄下的日志;重現了一下錯誤現象;

1)hadoop安裝目錄下并無日志產生(active和standby均沒有)

因此可以排除是journalnode同步失敗引起(journalnode同步有錯的話會報在該日志中)

2)zookeeper下沒有事務日志產生

(PS:事務日志產生在配置文件zoo.cfgd的dataLogDir下,而安裝目錄下的log中產生的是運行日志);

3)輸入命令zkCli.sh連接zookeeper Server命令行輸入ls /,確認是否有hadoop ha目錄生成(--有)

4)2),3)可以排除故障并非zookeeper不作為引起


調查陷入膠著狀態;

于是轉而繼續研究hadoop HA的實現原理,希望能獲得些思路;

調查過程中發現hadoop進行HA切換時會有一種避免腦裂(brain split)的機制:

以下援引博客中查到的相關信息:

[4.如何在狀態切換時避免brain split(腦裂)?

腦裂:active namenode工作不正常后,zkfc在zookeeper中寫入一些數據,表明異常,這時standby namenode中的zkfc讀到異常信息,并將standby節點置為active。但是,如果之前的active namenode并沒有真的死掉,出現了假死(死了一會兒后又正常了,哈哈,是不是很搞笑),這樣,就有兩臺namenode同時工作了。這種現象稱為腦裂。

解決方案:standby namenode感知到主用節點出現異常后并不會立即切換狀態,zkfc會首先通過ssh遠程殺死active節點的 namenode進程(kill -9 進程號)。但是(這樣還不行,驚訝),如果kill指令沒有執行成功咋辦??如果在一段時間內沒有收到執行成功的回執,standby節點會執行一個自定義腳本,盡量保證不會出現腦裂問題!這個機制在hadoop中稱為fencing(包括ssh發送kill指令,執行自定義腳本兩道保障)]

從解決方案中可知;當發生active節點崩壞時;hadoop會進行以下兩個操作:

1)通過ssh kill掉active節點的namenode進程

2)執行自定義腳本

于是查看目前hadoop集群的配置文件hdfs-site.xml中相關屬性

dfs.ha.fencing.methods

<property>

<name>dfs.ha.fencing.methods</name>

<value>shell(/bin/true)</value>

</property>

只配置上述解決方案中的2)自定義腳本;于是猜測是否為缺少ssh相關配置;導致防腦裂機制的流程有誤因此standby沒有被拉起來

于是追加了ssh相關設置:


重新進行kill active上的namenode試驗;成功;

active掛掉后standby可自動被拉起成active節點;實現了高可用性


呃……當然為什么這么修改之后問題就解決了;究竟后臺運作是什么機制,是不是就如同我的設想其實我也不是特別明白。。。

但可以肯定的是問題點就在這里;重新配置后問題解決了。。。。。

有知道的小伙伴還請不吝指教~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容