Facebook如何使用Avartarnode提升HDFS可靠性
在不久前的Hadoop峰會上,Facebook的工程師Andrew Ryan分享了他們如何使用Namenode和Avatarnode提升HDFS可靠性的方法。Ryan從2009年開始,就參與到了Facebook的 Hadoop開發中。在他的幫助下,Facebook的Hadoop和HDFS數據基礎設施,從一個數據中心的單個600TB集群,發展到了多個數據中心 超過100多個HDFS集群。
Ryan首先分析了HDFS的Namenode機制。
圖:Namenode,單點故障點
在HDFS中,客戶端通過Namenode服務器完成文件系統的元數據操作,并與一個Datanode池通信,以發送和接受文件系統數據。數據在多個Datanode上都有復制,因此一個Datanode宕機不會出現數據丟失,對集群也不應是致命問題。
但是Namenode就不是這樣,所有的元數據操作都要通過它完成。如果Namenode不可用,任何客戶端就無法從HDFS完成讀寫操作,雖然客 戶端仍可以從Datanode中讀出單個數據塊,但是整個HDFS就處于宕機狀態,所有依賴于HDFS的用戶和應用就無法正常工作。?
因此,HDFS Namenode是一個單點故障點(SPOF)。
Ryan指出:在Facebook,他們希望知道這個問題的影響范圍,并嘗試找出解決這個問題的方法。
Data Warehouse是Facebook最大的HDFS部署之一,他們用其完成傳統的HadoopMapReduce工作:有一些非常大的集群運行 MapReduce批處理。由于集群很大,Namenode的負載非常高,CPU、內存、磁盤和網絡都常常處于很大的壓力之下。他們的統計發現:在 Data Warehouse發生的問題中,41%是由HDFS造成的,這也是最大的問題肇因。
Ryan接下來指出:如果能有某種高可用的Namenode方案,也許能防止10%的Data Warehouse問題和突發的宕機時間,這仍然是一個巨大的勝利,因為這讓他們可以執行計劃好的軟件與硬件維護操作。實際上,他們估計這可以減少他們 50%計劃好的宕機時間,而之前在這些時間里集群都是不可用的。
下圖是他們的高可用Namenode HDFS架構的簡化版本。
圖:高可用的Namenode
在這個架構中,客戶端可以與Primary Namenode或是Standby Namenode通信,Datanode也可以向這兩個服務器發送塊報告,實現了高可用的Namenode——Avatarnode。
Ryan提到:Facebook在兩年前就開始研究Avatarnode。現在,這已經是一個開源項目,提供高可用的Namenode,支持熱切 換。目前,在Facebook中,Avatarnode已經進入生產環境,并運行在他們最大的Hadoop Data Warehouse集群中。
Avatarnode是一個雙節點的、高可用的Namenode,需要手工完成故障切換。它將現有的Namenode代碼包裝在一個Zookeeper層中。Avatarnode的基本概念包括:
- Primary Avatarnode和Standby Avatarnode角色可互換。
- 當前的Primary Avatarnode主機名保存在Zookeeper中。
- 修改后的Datanode的塊報告要同時發送給Primary Avatarnode和Standby Avatarnode。
- 修改后的HDFS客戶端在開始每次事務前,要檢查Zookeeper,如果以此事務失敗,要再次檢查Zookeeper。即使Avatarnode發生故障切換,一次寫操作也可以得以完成。
圖:客戶端視角
圖:Datanode視角
Ryan指出:接下來,他們要進一步提升Avatarnode,并將其整合在一個通用的高可用框架中,使之能夠完成不需人工參與的、自動化的、安全的故障切換。
讀者可以訪問GitHub上Facebook發布的Hadoop版本,其中包括Avatarnode源代碼。
除了Facebook之外,還有其他公司也致力于解決這個問題,包括:
- Appistry,2010年就發布了一個完全分布式的文件系統
- MapR的Hadoop版本也提供高可用的文件系統
- Apache的Hadoop 2.0中,也包括了Cloudera的最新發布版本
InfoQ的讀者,不知道您對如何解決Namenode高可用問題有何意見和看法?歡迎在評論中分享您的經驗。
轉載于:https://www.cnblogs.com/shihao/archive/2012/08/28/2660727.html
總結
以上是生活随笔為你收集整理的Facebook如何使用Avartarnode提升HDFS可靠性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今日松油价格是多少钱一斤
- 下一篇: 什么是ThreadLocal