Hadoop分布式檔案系統(Hadoop Distributed File System, HDFS)是指被設計成适合運作在通用硬體上的分布式檔案系統。它和現有的分布式檔案系統有很多共同點。但同時,它和其他的分布式檔案系統的差別也是很明顯的。
HDFS有着高容錯性(fault-tolerant)的特點,并且設計用來部署在低廉的(low-cost)硬體上。。HDFS能提供高吞吐量的資料通路,非常适合大規模資料集上的應用,而且它提供高吞吐量(high throughput)來通路應用程式的資料,适合那些有着超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實作流的形式通路(streaming access)檔案系統中的資料。HDFS放寬了一部分POSIX限制,來實作流式讀取檔案系統資料的目的。HDFS在最開始是作為Apache Nutch搜尋引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
HDFS采用了主從(Master/Slave)結構模型,一個HDFS叢集是由一個NameNode和若幹個DataNode組成的。其中NameNode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案的通路操作;叢集中的DataNode管理存儲的資料。
整個HDFS系統将由數百或數千個存儲着檔案資料片段的伺服器組成。實際上它裡面有非常巨大的組成部分,每一個組成部分都很可能出現故障,這就意味着HDFS裡的總是有一些部件是失效的,是以,故障的檢測和自動快速恢複是HDFS一個很核心的設計目标。
運作在HDFS之上的應用程式必須流式地通路它們的資料集,它不是運作在普通檔案系統之上的普通程式。HDFS被設計成适合批量處理的,而不是使用者互動式的。重點是在資料吞吐量,而不是資料通路的反應時間,POSIX的很多硬性需求對于HDFS應用都是非必須的,去掉POSIX一小部分關鍵語義可以獲得更好的資料吞吐率。
運作在HDFS之上的程式有很大量的資料集。典型的HDFS檔案大小是GB到TB的級别。是以,HDFS被調整成支援大檔案。它應該提供很高的聚合資料帶寬,一個叢集中支援數百個節點,一個叢集中還應該支援千萬級别的檔案。
資料來源:
1.Apache Hadoop
http://hadoop.apache.org/2.楊旭,湯海京,丁剛毅編著,資料科學導論 第2版,北京理工大學出版社,2017.01
3.陳吉榮, 樂嘉錦. 基于Hadoop生态系統的大資料解決方案綜述[J]. 計算機工程與科學, 2013, 35(10):25-35.
4.Hadoop生态系統 [美] Kevin Sitto(凱文·斯托),[美] Marshall Presser(馬歇爾·普瑞斯) 著