Hadoop架構中的HDFS和NameNode
到目前為止,我們談到Hadoop是一個創建分布式集群的框架,能夠處理大的、不同的數據集。然而,另一個說法是將Hadoop理解為一個存儲設備或存儲環境。確實,它是一個能夠在其上創建應用的平臺,有存儲PB級數據的能力。此外,它能夠處理并分析數據;提供越來越多的“大數據”應用結果。(不可否認,這正是一個以存儲為中心的Hadoop架構觀點。)
我們也可以說每個節點提供其本地計算并把資源存儲到集群,這些節點基于常用的服務器硬件。有時候用“cheap and deep”這一術語來描述資源配置理念,意思是集群由常用服務器(廉價的)組成,能夠擴展到數百個節點(深入)――都是以免費的Apache Hadoop(可以免費獲得)為基礎。
Hadoop:與RAID類似嗎?
鑒于cheap and deep(廉價和深入)的傾向,隨著時間的推移出現預期的一類或另一類組件失敗。所以Hadoop的目的是檢測并解決故障。這方面Hadoop有點類似于初期以廉價磁盤冗余陣列為代表的RAID。假設,由許多PC級磁盤構成存儲陣列,驅動器將來很可能發生故障。訣竅是允許驅動器出現故障而不丟失數據。不同的RAID級別(0,1,3,5,6等等)提供多種陣列配置和驅動器故障恢復模式。
的確,Hadoop可以看作廉價服務器冗余陣列(RAIS). Hadoop也假設冗余服務器的硬件故障將是一個正常的操作事件,并因此內置恢復進程。大多數部署在Hadoop分布式文件系統(HDFS)中.例如,當提取數據時,它被分解成數據塊(默認是64MB塊)。塊被多次拷貝然后分布――原始和副本――訪問DataNodes。HDFS默認創建兩份副本,并且通常寫入到不同機架的服務器。這個拷貝和分布進程由NameNode管理。如果由于某種原因一個DataNode服務器出現故障,包括內部磁盤故障,這個NameNode將在集群中其它地方找到丟失的數據,當故障節點被重啟或替換后進程能夠繼續執行。
區別于現代RAID陣列
盡管如此,還有一些明顯的遺漏。從DataNode的故障中恢復比NameNode中斷恢復相對容易。在當前的Apache Hadoop版本中,沒有適用于無功能的NameNode的自動恢復規定。Hadoop NameNode是一個臭名昭著的單點故障點(SPOF)——和RAID陣列沒有什么不同,單控制器的RAID陣列也是一個SPOF。NameNode損壞關閉集群可能導致數據丟失,如果故障發生,數據不能被恢復。此外,重啟大集群(假設數據可恢復)中的NameNode可能花費數小時。
Apache Hadoop尋址問題
缺乏自動NameNode故障轉移模式和其它Apache Hadoop的缺點(JobTracker是另一個SPOF)給商業供應商急于出售“企業就緒”方案提供了機會。這些供應商的普遍做法之一是從本質上支持Apache Hadoop,通過APIs訪問核心Hadoop組件,像HDFS一樣隨同他們自身修改,一些開放的和其它的專利。供應商列表分成以下幾類(但不限于此):
• EMC
• HortonWorks
• IBM
• MapR (也是由EMC Greenplum提供)
• Red Hat
這些供應商(其它供應商希望在解決問題的同時,保留Hadoop的MapReduce框架)的業務首先是為了解決NameNode和JobTracker SPOF問題。例如,MapR是Apache Hadoop工具的分布,實現集群中跨服務器分布式NameNode功能(分布式NameNode負載均衡)。Red Hat的GlusterFS使用它內置的元數據感知NameNode,完全消除了元數據服務器。
我們也提到,Hadoop創建多個跨集群分布的數據副本,適用于不同的恢復場景。然而,使用快照替代可能適用于回滾集群到一個已知的好的狀態,同時降低全數據拷貝的開銷。一些供應商在他們的Hadoop架構中支持快照拷貝。
回顧我們關于向外擴展的網絡直連存儲(NAS)作為Hadoop主存儲的討論, EMC Isilon也可以用來解決這些問題。Isilon的OneFS全局命名空間文件系統能夠支持Greenplum Hadoop (HD)集群。Isilon把HDFS看作“過線”協議,因此是第一個集成到HDFS的SoNAS平臺。它也解決了Hadoop NameNode 和 JobTracker功能的單點故障。
Apache Hadoop的回應
公平地說,我們不得不指出Apache社區清楚Hadoop當前NameNode和其它問題的缺陷。事實上,現在從Cloudera (CDH 4.0)可以得到一個重要的作為測試版的新版本,專門針對NameNode SPOF問題。它包括一個HDFS的高可用(HA)版本.在HA版本中是一個“熱備”NameNode,在管理員控制下,當活動節點出現故障或因管理員在日常維護和升級將NameNode離線時接管——通常這種情況很有可能。總之,HDFS HA包括兩個主/備配置的NameNodes。將來,支持自動NameNode故障切換。
結語
我們由關注大數據存儲開始本系列,另一種說法是PB級存儲,大數據分析是做商業智能(BI)的新途徑。但是,我們已經看到大數據存儲如何與Hadoop結合使用——集成大數據存儲和分析——Hadoop可以被看作一個PB級存儲設備。
然而,我們還沒有真正探索一個最終的但重要的因素:成本。除了我們以前描述的給無共享集群增加網絡存儲的潛在問題,一個存儲區域網絡(SAN)和NAS也被“傳統主義者”視為太昂貴的方法。記住這個準則:cheap and deep。與之相似,在集群結點級固態硬盤(SSD)作為直連存儲(DAS)的替代方案。甚至能夠用渦輪給集群增壓的存儲在規模和適用性上被視為太昂貴,只適用于那些愿意為性能付錢的用戶。
真正的問題是廉價和深的思想將來是否會在企業級數據中心盛行。如果確實如此,節點級DAS作為Hadoop唯一的存儲層將很可能盛行,直到有人意識到持續增加服務器到集群來適應數據增長,同時會有越來越多的增長維護問題和管理開銷方面成本影響。如果不是這樣,為了業務連續和數據存儲目的SAN 和/或 NAS將作為一級或二級存儲層,并且存儲管理員的技能將被再次加分。