Hadoop原始碼分析

來源:互聯網
上載者:User

 

一個典型的HDFS系統包括一個NameNode和多個DataNode。NameNode維護名字空間;而DataNode儲存資料區塊。

DataNode負責儲存資料,一個資料區塊在多個DataNode中有備份;而一個DataNode對於一個塊最多隻包含一個備份。所以我們可以簡單地認為DataNode上存了資料區塊ID和資料區塊內容,以及他們的映射關係。

一個HDFS叢集可能包含上千DataNode節點,這些DataNode定時和NameNode通訊,接受NameNode的指令。為了減輕NameNode的負擔,NameNode上並不永久儲存那個DataNode上有那些資料區塊的資訊,而是通過DataNode啟動時的上報,來更新NameNode上的映射表。

DataNode和NameNode建立串連以後,就會不斷地和NameNode保持心跳。心跳的返回其還也包含了NameNode對DataNode的一些命令,如刪除資料庫或者是把資料區塊複製到另一個DataNode。應該注意的是:NameNode不會發起到DataNode的請求,在這個通訊過程中,它們是嚴格的用戶端/伺服器架構。

DataNode當然也作為伺服器接受來自用戶端的訪問,處理資料區塊讀/寫請求。DataNode之間還會相互連信,執行資料區塊複製任務,同時,在用戶端做寫操作的時候,DataNode需要相互配合,保證寫操作的一致性。

下面我們就來具體分析一下DataNode的實現。DataNode的實現包括兩部分,一部分是對本機資料塊的管理,另一部分,就是和其他的實體打交道。我們先來看本機資料塊管理部分。

安裝Hadoop的時候,我們會指定對應的資料區塊存放目錄,當我們檢查資料區塊存放目錄目錄時,我們回傳現下面有個叫dfs的目錄,所有的資料就存放在dfs/data裡面。

其中有兩個檔案,storage裡存的東西是一些出錯資訊,貌似是版本不對…云云。in_use.lock是一個空檔案,它的作用是如果需要對整個系統做排斥操作,應用應該擷取它上面的一個鎖。

接下來是3個目錄,current存的是當前有效資料區塊,detach存的是快照(snapshot,目前沒有實現),tmp儲存的是一些操作需要的臨時資料區塊。

但我們進入current目錄以後,就會發現有一系列的資料區塊檔案和資料區塊中繼資料檔案。同時還有一些子目錄,它們的名字是subdir0到subdir63,子目錄下也有資料區塊檔案和資料區塊中繼資料。這是因為HDFS限定了每個目錄存放資料區塊檔案的數量,多了以後會建立子目錄來儲存。

資料區塊檔案顯然儲存了HDFS中的資料,資料區塊最大可以到64M。每個資料區塊檔案都會有對應的資料區塊中繼資料檔案。裡面存放的是資料區塊的校正資訊。下面是資料區塊檔案名稱和它的中繼資料檔案名稱的例子:

blk_3148782637964391313
blk_3148782637964391313_242812.meta

上面的例子中,3148782637964391313是資料區塊的ID號,242812是資料區塊的版本號碼,用於一致性檢查。

在current目錄下還有下面幾個檔案:

VERSION,儲存了一些檔案系統的元資訊。 

dncp_block_verification.log.curr和dncp_block_verification.log.prev,它記錄了一些DataNode對檔案系定時統做一致性檢查需要的資訊。

更多請看:http://caibinbupt.iteye.com/blog/282580

作者是寫了一個系列,我認為其中這一節即第9節 值得一看,其他是講源碼的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.