Hadoop:HDFS數據存儲與切分


Hadoop入門教程:HDFS數據存儲與切分,在Hadoop中數據的存儲是由HDFS負責的,HDFS是Hadoop分布式計算的存儲基石,Hadoop的分布式文件系統和其他分布式文件系統有很多類似的特質。那么HDFS相比於其他的文件系統有什么特征呢?簡單總結有如下的基本特征:

對於整個集群有單一的命名空間。

數據一致性。適合一次寫入多次讀取的模型,客戶端在文件沒有被成功創建之前無法看到文件存在。

文件會被分割成多個文件塊,每個文件塊被分配存儲到數據節點上,而且根據配置會有復制文件塊來保證數據的安全性。

在Hadoop中數據存儲涉及HDFS的三個重要角色,分別為:名稱節點(NameNode)、數據節點(DataNode)、客戶端。

NameNode可以看做是分布式文件系統中的管理者,主要負責管理文件系統的命名空間、集群配置信息、存儲塊的復制。NameNode會存儲文件系統的Metadata在內存中,這些信息主要包括文件信息,即每一個文件對應的文件塊的信息,以及每一個文件塊在DataNode的信息。

DataNode是文件存儲的基本單元。它將Block存儲在本地文件系統中,保存了Block的Metadata,同時周期性地發送所有存在的Block的報告給NameNode。Client就是需要獲取分布式文件系統文件的應用程序。數據存儲中的讀取和寫入過程,如圖1-3所示。

 

 

從圖1-3中可以看到,數據存儲過程中主要通過三個操作來說明NameNode、DataNode、Client之間的交互關系。根據圖1-3所示的內容我們簡單分析一下Hadoop存儲中數據寫入和讀取訪問的基本流程步驟。

文件寫入HDFS的基本流程如下:

1)Client向NameNode發起文件寫入的請求。

2)NameNode根據文件大小和文件塊配置情況,向Client返回它所管理的DataNode的信息。

3)Client將文件划分為多個Block,根據DataNode的地址信息,按順序寫入每一個DataNode中。

文件讀取HDFS的基本流程如下:

1)Client向NameNode發起文件讀取的請求。

2)NameNode返回文件存儲的DataNode的信息。

3)Client讀取文件信息。

在HDFS中復制文件塊的基本流程如下:

1)NameNode發現部分文件的Block不符合最小復制數或部分DataNode失效。

2)通知DataNode相互復制Block。

3)DataNode開始相互復制。

通過上面三個流程我們基本了解了Hadoop是如何使用HDFS存儲數據的,那么在Hadoop中數據是如何切分的呢?我們知道HDFS在具體存儲文件數據時先划分為邏輯Block塊,后續的寫入、讀取、復制都是以Block塊為單元進行的。那么在Hadoop中數據處理時存儲在HDFS上的數據是如何切分呢?其實從HDFS的文件寫入過程就可以看出,在Client和NameNode交互的同時是需要加載客戶端的Hadoop配置文件的,如果用戶設置了塊的大小配置屬性dfs.block.size,就會按照用戶自定義的大小進行邏輯切分,如果沒有配置,則使用集群默認的配置大小,因此在寫入數據時文件已經在邏輯上切分好了,在運行MapReduce時默認就會按照切分好的塊大小和數量來啟動Map,也就是默認Map的數量是在數據寫入時就確定好的,當然用戶也可以指定文件數據的切分大小,可通過mapred.min.split.size參數在將作業提交客戶端時進行自定義設置。來源:CUUG官網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM