Hadoop2.0的HA介紹



Hadoop2.0HA介紹

時間 2014-05-03 17:42:25 Linux公社

原文  http://www.linuxidc.com/Linux/2014-05/101174.htm

主題 Hadoop NFS

前一篇文章介紹了Hadoop2.0hadoop2.0架構,具體版本是hadoop2.2.0)的安裝和最基本的配置(見 http://www.linuxidc.com/Linux/2014-05/101173.htm ),並沒有配置HAHighAvalability,高可用性),接下來的文章中會介紹hadoop2.0HA的配置。在介紹hadoop2.0HA配置之前,本文先介紹hadoop2.0HA的基本原理和2種方式。

1 概述

hadoop2.0之前,namenode只有一個,存在單點問題(雖然hadoop1.0secondarynamenodecheckpointnodebuckcupnode這些,但是單點問題依然存在),在hadoop2.0引入了HA機制。hadoop2.0HA機制官方介紹了有2種方式,一種是NFSNetwork File System)方式,另外一種是QJMQuorumJournal Manager)方式。

2 基本原理

hadoop2.0HA 機制有兩個namenode,一個是active namenode,狀態是active;另外一個是standbynamenode,狀態是standby。兩者的狀態是可以切換的,但不能同時兩個都是active狀態,最多隻有1個是active狀態。只有activenamenode提供對外的服務,standbynamenode是不對外服務的。activenamenodestandbynamenode之間通過NFS或者JNjournalnodeQJM方式)來同步數據。

active namenode會把最近的操作記錄寫到本地的一個edits文件中(editsfile),並傳輸到NFS或者JN中。standbynamenode定期的檢查,從NFS或者JN把最近的edit文件讀過來,然後把edits文件和fsimage文件合併成一個新的fsimage,合併完成之後會通知active namenode獲取這個新fsimageactivenamenode獲得這個新的fsimage文件之後,替換原來舊的fsimage文件。

這樣,保持了activenamenodestandbynamenode的數據的實時同步,standbynamenode可以隨時切換成activenamenode(譬如activenamenode掛了)。而且還有一個原來hadoop1.0secondarynamenodecheckpointnodebuckcupnode的功能:合併edits文件和fsimage文件,使fsimage文件一直保持更新。所以啓動了hadoop2.0HA機制之後,secondarynamenodecheckpointnodebuckcupnode這些都不需要了。

3 NFS方式

NFS作爲active namenodestandbynamenode之間數據共享的存儲。activenamenode會把最近的edits文件寫到NFS,而standbynamenodeNFS中把數據讀過來。這個方式的缺點是,如果active namenode或者standbynamenode有一個和NFS之間網絡有問題,則會造成他們之前數據的同步出問題。

http://img1.tuicool.com/AJ3iUnY.jpg!web

4 QJMQuorum Journal Manager )方式 

QJM的方式可以解決上述NFS容錯機制不足的問題。active namenodestandbynamenode之間是通過一組journalnode(數量是奇數,可以是3,5,7...,2n+1)來共享數據。activenamenode把最近的edits文件寫到2n+1journalnode上,只要有n+1個寫入成功就認爲這次寫入操作成功了,然後standby namenode就可以從journalnode上讀取了。可以看到,QJM方式有容錯的機制,可以容忍njournalnode的失敗。

http://img0.tuicool.com/VbMfauV.jpg!web

5 主備節點的切換

active namenodestandby namenode可以隨時切換。當active namenode掛掉後,也可以把standby namenode切換成active狀態,成爲activenamenode。可以人工切換和自動切換。人工切換是通過執行HA管理的命令來改變namenode的狀態,從standbyactive,或者從activestandby。自動切換則在activenamenode掛掉的時候,standbynamenode自動切換成active狀態,取代原來的active namenode成爲新的active namenodeHDFS繼續正常工作。

主備節點的自動切換需要配置zookeeperactive namenodestandbynamenode把他們的狀態實時記錄到zookeeper中,zookeeper監視他們的狀態變化。當zookeeper發現activenamenode掛掉後,會自動把standbynamenode切換成activenamenode

http://img2.tuicool.com/BBbMRb.jpg!web

6 實戰tips

QJM方式有明顯的優點,一是本身就有fencing的功能,二是通過多個journal節點增強了系統的健壯性,所以建議在生成環境中採用QJM的方式。 journalnode消耗的資源很少,不需要額外的機器專門來啓動journalnode,可以從hadoop集羣中選幾臺機器同時作爲journalnode

介紹完hadoop2.0HA的基本原理之後,後面的文章會分別詳細介紹這兩種方式的配置和原理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章