您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“hadoop2.6.4搭建HA集群之后不能自動切換namenode怎么辦”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“hadoop2.6.4搭建HA集群之后不能自動切換namenode怎么辦”這篇文章吧。
在搭好HA集群之后,想測試一下集群的高可用性,于是先把active的namenode給停掉:
hadoop-daemon.sh stop namenode
或者直接kill掉該節點namenode的對應進程也可。
但是通過hdfs haadmin -getServiceState master1 查看,發現standby的namenode并沒有自動切換成active,直到我把之前kill掉的namenode手動啟動才會切換,但是這樣就達不到高可用的目的啊。
在網上找了好久才發現原因,原來是在hdfs-site.xml通過參數dfs.ha.fencing.methods來實現,出現故障時通過哪種方式登錄到另一個namenode上進行接管工作。如果采用默認的值sshfence的話,設置集群就無法自動切換(下面單獨解釋)。log信息的是無法連接到standby的namenode。
<property> <name>dfs.ha.fencing.methods</name> <value>shell(/bin/true)</value> </property>
修改成上面的值后,問題解決,active的namenode被停掉后秒切到standby的namenode.
系統在任何時候只有一個namenode節點處于active狀態。在主備切換的時候,standby namenode會變成active狀態,原來的active namenode就不能再處于active狀態了,否則兩個namenode同時處于active狀態會有問題。所以在failover的時候要設置防止2個namenode都處于active狀態的方法,可以是java類或者腳本。
fencing的方法目前有兩種,sshfence和shell
sshfence方法是指通過ssh登陸到active namenode節點殺掉namenode進程,所以你需要設置ssh無密碼登陸,還要保證有殺掉namenode進程的權限。
shell方法是指運行一個shell腳本/命令來防止兩個namenode同時處于active,腳本需要自己寫。
注意,QJM方式本身就有fencing功能,能保證只有一個namenode能往journalnode上寫edits文件,所以是不需要設置fencing的方法就能的。但是,在發生failover的時候,原來的active namenode可能還在接受客戶端的讀請求,這樣客戶端很可能讀到一些過時的數據(因為新的active namenode的數據已經實時更新了)。因此,還是建議設置fencing方法。如果確實不想設置fencing方法,可以設置一個能返回成功(沒有fencing作用)的方法,如“shell(/bin/true)”。這個純粹為了fencing方法能夠成功返回,并不需要真的有fencing作用。這樣可以提高系統的可用性,即使在fencing機制失敗的時候還能保持系統的可用性。
以上是“hadoop2.6.4搭建HA集群之后不能自動切換namenode怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。