您好,登錄后才能下訂單哦!
本篇內容主要講解“Hadoop2.2.0中HDFS為什么具有高可用性”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Hadoop2.2.0中HDFS為什么具有高可用性”吧!
在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在單點故障(single point of failure),每一個集群中存在一個NameNode,如果NN所在的機器出現了故障,那么將導致整個集群無法利用,直到NN重啟或者在另一臺主機上啟動NN守護線程。
主要在兩方面影響了HDFS的可用性:
(1)、在不可預測的情況下,如果NN所在的機器崩潰了,整個集群將無法利用,直到NN被重新啟動;
(2)、在可預知的情況下,比如NN所在的機器硬件或者軟件需要升級,將導致集群宕機。
HDFS的高可用性將通過在同一個集群中運行兩個NN(active NN & standby NN)來解決上面兩個問題,這種方案允許在機器破潰或者機器維護快速地啟用一個新的NN來恢復故障。
在典型HA的集群中,通常有兩臺不同的機器充當NN。在任何時間,只有一臺機器處于Active狀態;另一臺機器是處于Standby狀態。Active NN負責集群中所有客戶端的操作;而Standby NN主要用于備用,它主要維持足夠的狀態,如果必要,可以提供快速的故障恢復。
為了讓Standby NN的狀態和Active NN保持同步,即元數據保持一致,它們都將會和JournalNodes守護進程通信。當Active NN執行任何有關命名空間的修改,它需要持久化到一半以上的JournalNodes上(通過edits log持久化存儲),而Standby NN負責觀察edits log的變化,它能夠讀取從JNs中讀取edits信息,并更新其內部的命名空間。一旦Active NN出現故障,Standby NN將會保證從JNs中讀出了全部的Edits,然后切換成Active狀態。Standby NN讀取全部的edits可確保發生故障轉移之前,是和Active NN擁有完全同步的命名空間狀態。
為了提供快速的故障恢復,Standby NN也需要保存集群中各個文件塊的存儲位置。為了實現這個,集群中所有的Database將配置好Active NN和Standby NN的位置,并向它們發送塊文件所在的位置及心跳。
在任何時候,集群中只有一個NN處于Active 狀態是極其重要的。否則,在兩個Active NN的狀態下NameSpace狀態將會出現分歧,這將會導致數據的丟失及其它不正確的結果。為了保證這種情況不會發生,在任何時間,JNs只允許一個NN充當writer。在故障恢復期間,將要變成Active 狀態的NN將取得writer的角色,并阻止另外一個NN繼續處于Active狀態。
為了部署HA集群,你需要準備以下事項:
(1)、NameNode machines:運行Active NN和Standby NN的機器需要相同的硬件配置;
(2)、JournalNode machines:也就是運行JN的機器。JN守護進程相對來說比較輕量,所以這些守護進程可以可其他守護線程(比如NN,YARN ResourceManager)運行在同一臺機器上。在一個集群中,最少要運行3個JN守護進程,這將使得系統有一定的容錯能力。當然,你也可以運行3個以上的JN,但是為了增加系統的容錯能力,你應該運行奇數個JN(3、5、7等),當運行N個JN,系統將最多容忍(N-1)/2個JN崩潰。
在HA集群中,Standby NN也執行namespace狀態的checkpoints,所以不必要運行Secondary NN、CheckpointNode和BackupNode;事實上,運行這些守護進程是錯誤的。
到此,相信大家對“Hadoop2.2.0中HDFS為什么具有高可用性”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。