【Hadoop】SNN與HA的區別

Echo_Jiang發表於2022-05-07

 在Hadoop的最初發布版本,遇到的單點故障及資源的利用率問題,而針對於單點問題,系統是怎麼解決的呢?

H1版本:NameNode+SNN(Secondary NameNode);

H2版本:NameNode+HANameNode;

H3版本:NameNode+NameNode+NameNode;

在H2及以上的版本,通過NameNode的standby的方式,成功的解決了單點問題。以下來看看SNN與HA的工作機制。

先來了解 NameNode 的工作機制

NameNode 用來儲存metadata資訊,主要有兩個部分:
1. fsimage:NN啟動時,對整個檔案系統的快照。
2. edit logs:NN啟動後,對檔案系統的改動序列。



SNN工作機制


1.定時到NN去獲取edit logs,並更新到fsimage上(SNN自己的fsimage)。
2. 一旦SNN有了新的fsimage檔案,它將其拷貝回NN中。
3.NN在下次重啟時會使用這個新的fsimage檔案,從而減少重啟的時間。

SNN解決了fsimage資訊及時同步問題,加速了NameNode的啟動,在遇到故障是,可以加速NameNode 的恢復程式。但是,沒法解決NN掛掉後的接管問題。這就是H1的單點問題。



HA工作機制


Active和Standby兩個NameNode之間的資料互動流程為:
1. NameNode在啟動後,會先載入FSImage檔案和共享目錄上的EditLog Segment檔案;
2. Standby NameNode會啟動EditLogTailer執行緒和StandbyCheckpointer執行緒,正式進入Standby模式;
3. Active NameNode把EditLog提交到JournalNode叢集;
4. Standby NameNode上的EditLogTailer 執行緒定時從JournalNode叢集上同步EditLog;
5. Standby NameNode上的StandbyCheckpointer執行緒定時進行Checkpoint,並將Checkpoint之後的 FSImage檔案上傳到Active NameNode。
(在Hadoop 2.0中不再有Secondary NameNode這個角色了, StandbyCheckpointer執行緒的作用其實是為了替代 Hadoop 1.0版本中的Secondary NameNode的功能)

QJM(Quorum Journal Manager )方式
 Active NameNode和Standby NameNode共享資料,完成H1版本SNN資料更新工作;

 Active NameNode和Standby NameNode之間是通過一組JournalNode(數量是奇數,可以是3,5,7…,2n+1)來共享資料。Active NameNode把最近的edits檔案寫到2n+1個JournalNode上,只要有n+1個寫入成功就認為這次寫入操作成功了,然後Standby NameNode就可以從JournalNode上讀取了。可以看到,QJM方式有容錯機制,可以容忍n個JournalNode的失敗。


Hadoop HA高可用的NamaNode主備切換

主備NameNode的自動切換需要配置Zookeeper。Active NameNode和Standby NameNode把他們的狀態實時記錄到Zookeeper中,Zookeeper監視他們的狀態變化。當Zookeeper發現Active NameNode掛掉後,會自動把Standby NameNode切換成Active NameNode。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017085/viewspace-2892907/,如需轉載,請註明出處,否則將追究法律責任。

相關文章