▲The HDFS Namenode is a single point of failure (SPOF)
Facebook也深知“Namenode-as-SPOF”所帶來問題的嚴重性,所以Facebook希望建立一套系統(tǒng)已破除“Namenode- as-SPOF”帶來的隱患。但在了解這套系統(tǒng)之前,首先來看一下Facebook在使用和部署HDFS都遇到了哪些問題。
Facebook數(shù)據(jù)倉庫的使用
在Facebook的數(shù)據(jù)倉庫中部署著最大的HDFS集群,數(shù)據(jù)倉庫的使用情況是傳統(tǒng)的Hadoop MapReduce工作負載——在大型集群中一小部分運行MapReduce批處理作業(yè)
因為集群非常龐大,客戶端和眾多DataNode節(jié)點與NameNode節(jié)點傳輸海量的原數(shù)據(jù),這導致NameNode的負載非常沉重。而來自 CPU、內(nèi)存、磁盤和網(wǎng)絡帶來的壓力也使得數(shù)據(jù)倉庫集群中NameNode高負載狀況屢見不鮮。在使用過程中Facebook發(fā)現(xiàn)其數(shù)據(jù)倉庫中由于 HDFS引發(fā)的故障占總故障率的41%。
HDFS NameNode是HDFS中的重要組成部分,同時也是整個數(shù)據(jù)倉庫中的重要組成部分。雖然高可用的NameNode只可以預防數(shù)據(jù)倉庫10%的計劃外停 機,不過消除NameNode對于SPOF來說可謂是重大的勝利,因為這使得Facebook可執(zhí)行預訂的硬件和軟件回復。事實上,F(xiàn)acebook預計 如果解決NameNode可消除集群50%的計劃停機時間。
那么高可用性NameNode是什么樣子的?它將如何工作?讓我們來看一下高度可用性NameNode的圖表。
在此結構中,客戶端可與Primary NameNode與Standby NameNode通信,同樣眾多DataNode
也具備給Primary NameNode與Standby NameNode發(fā)送block reports的能力。實質(zhì)上Facebook所研發(fā)的AvatarNode就是具備高可用NameNode的解決方案。
Avatarnode:具備NameNode故障轉(zhuǎn)移的解決方案
為了解決單NameNode節(jié)點的設計缺陷,大約在兩年前Facebook開始在內(nèi)部使用AvatarNode工作。
同時AvatarNode提供了高可用性的NameNode以及熱故障切換和回滾功能,目前Facebook已經(jīng)將AvatarNode貢獻到了開 源社區(qū)。經(jīng)過無數(shù)次的測試和Bug修復,AvatarNode目前已在Facebook最大的Hadoop數(shù)據(jù)倉庫中穩(wěn)定運行。在這里很大程度上要感謝 Facebook的工程師Dmytro Molkov。
當發(fā)生故障時,AvatarNode的兩個高可用NameNode節(jié)點可手動故障轉(zhuǎn)移。AvatarNode將現(xiàn)有的NameNode代碼打包并放置在Zookeeper層。
AvatarNode的基本概念如下:
·具備Primary NameNode與Standby NameNode
·當前Master主機名保存在ZooKeeper之中
·改進的DataNode發(fā)送block reports到Primary NameNode與Standby NameNode
·改進的HDFS客戶端將在每個事物開始之前對Zookeeper進行檢查,如果失敗會轉(zhuǎn)移到另外的事務之中。同時如果AvatarNode故障轉(zhuǎn)移出現(xiàn)在寫入的過程中,AvatarNode的機制將允許保證完整的數(shù)據(jù)寫入。
或許有人會Facebook這一解決方案的名字感到好奇,這是因為Facebook的Hadoop工程師Dhruba Borthakur來到公司時正好是James Cameron《阿凡達》電影熱映時間。(我們應該感到慶幸,如果是1998年的話或許應該叫TitanicNode了)。
AvatarNode經(jīng)受住了Facebook內(nèi)部最苛刻的工作環(huán)境,未來Facebook將繼續(xù)大幅度改善AvatarNode的可靠性和HDFS集群的管理性。并整合與一般高可用性框架的整合,還將實現(xiàn)無人值守、自動化與安全故障轉(zhuǎn)移等特性。
Facebook已將自身使用的Hadoop與AvatarNode解決方案托管到GitHub。感興趣的朋友可下載研究。當然不止Facebook在試圖解決Hadoop的缺陷,MapR和Cloudera的產(chǎn)品也具備相似的能力。