HDFS原始碼解析(1) 初識HDFS

2021-07-02 19:11:05 字數 1987 閱讀 3299

hdfs 的特點

hdfs具有高容錯性的特點(fault-tolterant)的特點,因為hadoop部署在 廉價的商用集群上,所以hdfs被設計成認為硬體是常態,具有高容錯性。其提供高吞吐量(high  throughput)的特性, 用來訪問應用程式的資料,適合有超大資料集(large data set)的應用程式。hdfs放寬了對posix的要求,這樣可以實現通過流的形式訪問檔案系統中的資料。

(1)硬體故障:乙個hdfs系統中有著數百或數千個儲存檔案片段的廉價伺服器組成,機器掛掉的事情常有發生,所以hdfs必須保證在機器掛掉的情況下不影響系統的正常執行,所以hdfs被設計成硬體故障是常態而不是異常。

(2)

流式的資料訪問 :執行在hdfs 上 的程式必須以流式地訪問它們的資料集,它  不是典型的執行在常規檔案系統之上常規程式。hdfs的設計適合批量處理,而不是使用者互動式的,它的重點是高吞吐量而不是資料的訪問時間,也就是說hdfs以犧牲檔案訪問時間來換取高吞吐量。

(3)大資料集:執行在hdfs上的程式一般都具有很大的資料集,乙個hdfs可以儲存t、p級別的資料。

(4)簡單一致性模型:大部分的hdfs程式操作檔案時需要一次寫入,多次讀取。乙個檔案一旦被建立、寫入、關閉之後就不需要修改了。這個假定簡化了資料一致的問題和高吞吐量的資料訪問。

(5)移動計算比移動資料更經濟:hdfs提供了介面,讓程式自己移動到距離資料資料儲存更近的位置,因為在靠近資料儲存的位置計算是最為理想的狀態,這樣可以消除大資料集帶來的網路 阻塞,提高整個系統的吞吐量。

(6)名字節點和資料節點:hdfs是經典的主從式結構體系,乙個hdfs集群有以下部分組成。

名字節點:乙個,用來管理檔案的名字空間和排程客戶端訪問檔案的主伺服器。

資料節點:乙個或多個,用來儲存資料。

集群中只有乙個名字節點極大的簡化了系統地結構體系。名字節點是仲裁者和所有hdfs的元資料的倉庫。系統設計,使用者的實際資料不經過名字節點。

(7)檔案名字空間:hdfs支援傳統的繼承式的檔案組織。乙個使用者或乙個程式可以建立目錄,儲存檔案到很多目錄中。檔案系統的名字空間層次和其他檔案系統相似。可以建立檔案,也可以將乙個檔案從乙個目錄移動到移動到另乙個目錄,或重新命名。

(8)大量小檔案:名字節點(namenode)儲存著檔案系的元資料,因此檔案數量的限制也由名字節點的記憶體限制。

(9)複製的選擇:hdfs嘗試乙個讀操作來自距離它最近的複製。

(10)安全模式:在啟動的時候,名字結點進入乙個特殊的狀態叫做安全模式。安全模式不發生檔案塊的複製。

(11)低延遲資料訪問:需要低延遲訪問資料在毫秒範圍內的應用並不適合hdfs。hdfs 是為達到高資料吞吐量而優化的,這會以延遲為代價。

(12)元資料的持久化:hdfs的名字空間是由名字節點來儲存的。名字節點從事務日誌(editslog)來持久化每乙個對檔案系統的元資料的改變。完整的檔案系統名字空間、檔案塊的對映和檔案系統的配置都存在乙個叫fsimage的檔案中,fsimage也在名字節點的本地檔案系統中。

(13)通訊協議:所有的通訊協議都是在tcp/ip協議之上的。乙個客戶端和明確的配置埠的名字結點建立鏈結之後,它和名字節點的協議是clientprotocal,資料節點和名字節點之間的通訊用datanodeprotocal

rpc抽象的封裝了clientprotocal、datanodeprotocal。根據設計,名字節點不會發起乙個rpc,它只會對資料結點和客戶端發起的rpc做出反饋。

(14)魯棒性:hdfs主要的設計目標就是在存在故障的情況下正常的執行系統並可靠的儲存資料。三個普通的故障是名字結點失效、資料節點失效和網路斷開。

Hdfs 原始碼解析(2)

namenode啟動 namenode持久化了檔案和塊之間的對應關係,也就是在namenode資料目錄下的current fsimage目錄,namenode啟動的時候,會將這個檔案載入到記憶體裡。塊和機器的對應關係,namenode並不持久化,也就是說,namenode在啟動的時候,並不知道檔案塊...

Qt原始碼解析 1

本文 感謝原創者分享 如果你閱讀了 qt 的源 你會看到一堆奇奇怪怪的巨集,例如 q d,q q。我們的qt原始碼之旅就從理解這些巨集說起。下面先看乙個c 的例子。cpp class person person string name void setname string name int age...

jquery原始碼解析1

學了很久的js也寫了很長時間的jquery了,這裡來以學習的態度來看大牛的思想和架構。使用的是當前最新版本 3.1.1 就不考慮煩人的ie 6 7 8了,輕鬆愉快。其實一上來不知所措,這都是啥?function global,factory return factory w else typeof ...