【Hadoop】SNN與HA的區別
在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的功能)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Hadoop]chukwa與ganglia的區別Hadoop
- [Hadoop]Pig與Hive的區別HadoopHive
- Hadoop1.x與Hadoop2的區別Hadoop
- HA DG RAC 三者的區別
- Hadoop HA叢集 與 開發環境部署Hadoop開發環境
- NUMA,MPP和HADOOP的區別與聯絡Hadoop
- hadoop 2.0 hdfs HA 搭建Hadoop
- hadoop和spark的區別HadoopSpark
- hadoop之 Hadoop 2.x HA 、FederationHadoop
- hadoop1.0 和 Hadoop 2.0 的區別Hadoop
- Hadoop雙namenode配置搭建(HA)Hadoop
- 從hadoop發展角度徹底明白hadoop1.x與hadoop2.x的區別Hadoop
- 4.7 Hadoop+zookeeper實現HAHadoop
- Hadoop-HA節點介紹Hadoop
- Hadoop HA叢集簡單搭建Hadoop
- nginx與HANginx
- ??與?:的區別
- Hadoop2之NameNode HA詳解Hadoop
- Hadoop 和 GBase 8a 的區別Hadoop
- hadoop發行版本之間的區別Hadoop
- Q:Spark和Hadoop的架構區別SparkHadoop架構
- 《openstack 和hadoop的區別是什麼?》Hadoop
- hadoop實戰3(web管理介面介紹及NN,DN,SNN介紹)HadoopWeb
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- [hadoop]hadoop api 新版本與舊版本的差別HadoopAPI
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- BigData~03:Hadoop05 ~ HA叢集搭建Hadoop
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別