HDFS分布式文件系統學習(1)
Hadoop分布式文件系統(HDFS)是指被設計成適合運行在通用硬件(commodity hardware)上的分布式文件系統(Distributed File System)。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
HDFS非常適合大規模數據集的存儲和應用,可以用于存儲網站數據、交通電子眼、氣象數據、傳感器數據等。
HDFS采用了典型的Master/Slave系統架構,一個HDFS集群通常包含一個NameNode節點和若干個DataNode節點。一個文件被分成了一個或者多個數據塊,并存儲在一組DataNode上,DataNode節點可分布在不同的機架。NameNode執行文件系統的名字空間打開、關閉、重命名文件或目錄等操作,同時負責管理數據塊到具體DataNode節點的映射。在NameNode的統一調度下,DataNode負責處理文件系統客戶端的讀/寫請求,完成數據塊的創建、刪除和復制。
(1) NameNode:(管理節點)管理文件系統命名空間的主服務器和管理客戶端對文件的訪問。如打開,關閉和重命名文件和目錄。負責管理文件目錄、文件和block的對應關系以及block和datanode的對應關系,維護目錄樹,接管用戶的請求。這些信息以兩種形式存儲在本地文件系統中,一種是命名空間鏡像,一種是編輯日志。從NameNode中可以獲取每個文件的每個塊存儲在DataNode節點的位置,NameNode會在每次啟動系統時動態地重建這些信息。客戶端通過NameNode獲取元數據信息,與DataNode進行交互以訪問整個文件系統。
(2) DataNode:(數據節點)DataNode是文件系統的工作節點,供客戶端和NameNode調用并執行具體任務,存儲文件塊。DataNode通過心跳機制定時向NameNode發送所存儲的文件塊信息,報告其工作狀態。DataNodes還執行塊創建,刪除。
(3) Client:(客戶端)代表用戶通過與NameNode和DataNode交互來訪問整個文件系統,HDFS對外開放文件命名空間并允許用戶數據以文件形式存儲。用戶通過客戶端(Client)與HDFS進行通訊交互。
(4) 數據塊:數據塊是磁盤進行數據讀/寫操作的最小單元。文件以塊的形式存儲在磁盤中,文件系統每次都能操作磁盤數據塊大小整數倍的數據。HDFS中的文件也被劃分為多個邏輯塊進行存儲。Hadoop 2.0版本以后的數據塊大小默認為128M。HDFS 作為一個分布式文件系統,使用數據塊進行存儲有以下優勢:
(a)支持大規模文件存儲:文件以塊為單位進行存儲,一個大規模文件可以被分拆成若干個文件塊,不同的文件塊可以被分發到不同的節點上,因此,一個文件的大小不會受到單個節點的存儲容量的限制,可以遠遠大于網絡中任意節點的存儲容量。
(b)簡化系統設計:首先,大大簡化了存儲管理,因為文件塊大小是固定的,這樣就可以很容易計算出一個節點可以存儲多少文件塊;其次,方便了元數據的管理,元數據不需要和文件塊一起存儲,可以由其他系統負責管理元數據。
(c)適合數據備份:每個文件塊都可以冗余存儲到多個節點上,大大提高了系統的容錯性和可用性。
Hadoop 分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。