1. HDFS系統架構
HDFS(Hadoop Distributed File System),及Hadoop分布式文件系統 作用: 為Hadoop分布式計算框架提供高性能,高可靠,高可擴展的存儲服務 架構:典型的主(NameNode)從(DataNode)架構,兩者一對多的關系,一個節點對應一個DataNode,NameNode是整個文件系統的管理節點(文件系統的最高管理者), 負責對文件系統命名空間的 管理與維護,另外, 也負責面向於客戶端對文件的操作,控制,存儲統一管理與分配,而DataNode則是存儲具體文件 數據類型:在HDFS上,有兩種數據類型,分別是元數據類型(Metadata由NameNode存儲在鏡像文件中),所謂元數據就是文件除了實際內容外所有表示文件信息的數據,即MetaNode 另外一種數據類型則是實際的文件數據了,在DataNode上存儲形式是塊(block,Hadoop1.x:64M;Hadoop2.x:128M),每個塊可能有多個副本(默認3個,可自定義),因為由於副本機制,提高了文件數據的可靠性 NameNode啟動時加載鏡像文件(fsimage.xxx)和操作文件(edits.xxx)到內存,並等待DataNode上報元數據,形成文件系統結構,一旦NameNode宕掉,則導致整個HDFS無法正常服務
2. HA定義
HA(High Availability,高可用性):系統對外提供正常服務時間的百分比 舉個例子:Hadoop運行時會有兩種情況 1. 是Hadoop正常提供服務時間(MTTF), 2. 是不能提供正常服務時間(MTTR), 所以HA=MTTF/(MTTF+MTTR)*100% 通過上面可以看出,HA能精確度量系統對對外提供正常服務的能力,也就是說系統的高可用程度 HDFS出現無法提供正常服務情況: 正常的軟硬件升級,維護;客戶誤操作導致HDFS發生故障絕大部分是由於軟件導致
3. HDFS HA 原因分析及應對措施
可靠性: NameNode作為管理節點,統一維護和控制HDFS文件系統,而DataNode存儲實際文件,且有副本護駕, 也就是說NameNode成為了HDFS系統的單一故障點,NameNode能否正常運行決定了HDFS的可靠性 可維護性: 一旦NameNode無法提供正常服務,如果元數據沒有損壞,那就好說,重新啟動即可, 但元數據一旦損壞且沒有任何措施,那么,NameNode的維護時間將無限大; DataNode因為副本的原故,既是塊文件損壞,也會很快恢復,NameNode也決定了系統的可維護性, 精確一點是NameNode元數據的可維護性決定HDFS的可維護性
4. 現有HDFS HA解決方案
主要是從使用者的角度出發,提高元數據的可靠性,減少NameNode服務恢復時間,措施主要是給元數據做備份,另外HDFS自身就有多種機制來確保元數據的可靠性,減少NameNode服務恢復時間的措施有兩種思路: 1. 基於NameNode重啟恢復模式,對NameNode自身啟動過程進行分析,優化加載過程,減少啟動時間 2. 啟動一個NameNode熱備節點,當主節點不能正常提供服務,切換為熱節點,切換時間成為恢復時間 從效率上分析,第一種思路盡管進行了優化,但NameNode的啟動時間仍受文件系統規模的限制, 第二種則突破了這種限制,現有比較成熟的HA解決方案有: a. Hadoop元數據備份 利用Hadoop自身元數據備份機制,NameNode可以將元數據保存到多個目錄,一般是一個本地目錄,有個遠程目錄(通過NFS進行共享),當NameNode發生故障,可以啟動備用機器NameNode,加載遠程目錄中的元數據信息提供服務 優點: Hadoop自帶機制,成熟可靠,使用簡單方便,無需開發,配置即可 元數據有多個備份,可有效保證元數據的可靠性,並且元數據內容保持在最新狀態 缺點: 元數據需要同步寫入多個備份目錄,效率低於單個NameNode 恢復NameNode也就是重啟NameNode,這樣恢復時間與文件系統規模成正比 由於備份的元數據在遠程目錄上,那么NFS在操作阻塞情況下,將無法提供正常服務 b. Hadoop的SecondaryNameNode方案 啟動一個SecondaryNameNode節點,定期從元數據信息(fsimage)和元數據操作日志(edits)下載,然后兩個文件合並生生成新的鏡像文件,推送給NameNode並重置edits,NameNode啟動時,只需加載新的fsimage 優點: Hadoop自帶機制,成熟可靠,使用簡單方便,無需開發,配置即可 減少NameNode啟動所需時間,防止edits文件過去龐大 缺點: 沒有做熱備,那么重啟時,文件系統的規模和啟動時間成正比 有概率在NameNode宕掉時,SecondaryNameNode並未做同步,也就可能一部分操作數據會丟失,重啟后的文件系統並不是最新的 c. Hadoop 的 CheckPoint Node 方案 CheckPoint(檢查點)原理基本與SecondaryNameNode相同,實現方式不同,該方案利用Hadoop 的CheckPoint機制進行備份,配置一個CheckPoint Node節點,該節點定期區合並元數據鏡像文件和用戶操作日志edits,在本地形成最新的CheckPoint 並上傳到Primary NameNode 進行更新,一旦NameNode宕掉,可以啟動備份NameNode節點讀取CheckPoint信息,並提供服務 優點: 使用簡單方便,無需開發,配置即可 元數據有多個備份 缺點: 沒有做熱備,切換節點時間長和SecondaryNameNode一樣 有概率恢復的元數據信息不是最新的 d. Hadoop 的Backup Node 方案 利用Hadoop自身的Failover措施,配置一個Backup Node,Backup Node 在內存和本地都保存一份HDFS最新的命名空間元數據信息,一旦NameNode宕掉,可使用Backup Node中最新的元數據信息 優點: Hadoop自帶機制,無需開發,配置即用 Backup Node的內存中保留了最新的元數據信息避免NFS掛載進行備份的所帶來的風險,Backup Node可以直接利用內存中的元數據信息進行CheckPoint並保存到本地,效率比從 NameNode下載元數據進行CheckPoint效率高,Backup Node在內存中保存,一旦有操作日志,Backup Node內存同步,並更新本地磁盤的edits,兩個步驟都成功,整個操作才算成功,並保證了元數據的最新狀態 缺點: 該方案還不成熟,NameNode無法提供服務時,Backup Node 還不能直接接替NameNode提供服務 Backup Node未保存Block的位置信息,等待DataNode上報,即便后期實現了熱備,仍需要一部分時間進行切換,當前版本只允許一個Backup Node 連接到NameNode e. DRDB方案 利用DRDB方案機制進行元數據備份,也就是在NameNode無法提供服務時,啟動備用機器的NameNode,讀取DRDB備份的元數據信息 優點: 比較成熟的備份機制 元數據有多個備份,保證了元數據的最新狀態 備份工作由DRDB完成,對於新的操作日志,NameNode無需同步到多個備份目錄,效率上優於元數據備份 缺點: 沒有做熱備,切換機器啟動NameNode時間長 元數據的可靠性沒有保障,需要引入新的機制去保證 f. FaceBook 的AvatarNode方案 一種熱備機制,首先AvatarNode作為Primary NameNode對外提供服務,Standby Node處於SafeMode模式,在內存中保存Primary NameNode最新的元數據信息,兩者依靠NFS進行交互, DataNode報告操作日志時會同時向兩個Node中發送Block位置信息,因此保證了元數據的最新狀態一但Primary NameNode宕掉,直接由Standby Node接替並成為Primary Node對外提供服務,大大縮短切換時間 優點: 提供熱備、切換時間大大縮短 集成在FaceBook自用的Hadoop中,並部署到了自己的集群 缺點: 修改了部分源碼,增加了一定的復雜性,在軟件維護上帶來一定問題 參考資料少,只提供一個備份節點
5. 方案優缺點比較