《hadoop學習》關於hdfs中的namenode和datanode詳解


namenode:

Namenode是中心服務器,單一節點(簡化系統的設計和實現),負責管理文件系統的名稱空間(namespace)以及客戶端對文件的訪問。

文件操作,Namenode負責文件元數據的操作,DataNode負責處理文件內容的讀寫請求,跟文件內容相關的數據流不會經過Namenode,只會詢問它跟那個DataNode聯系,否則Namenode會成為系統的瓶頸。

副本存放在哪些DataNode上由Namenode來控制,根據全局情況作出塊放置決定,讀取文件時Namenode盡量讓用戶先讀取最近的副本,降低帶塊消耗和讀取延時。

Namenode全權管理數據塊的復制,它周期性地從集群中的每個Datanode接收心跳信號和塊狀態報告。接收到心跳信號意味着該Datanode節點工作正常。塊狀態報告包含了一個該Datanode上所有數據塊的列表。

Namenode是主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限)以及每個文件的塊列表,以及塊所在的DataNode等等。

 

datanode:

一個數據塊在Datanode以文件存儲在磁盤上,包括兩個文件,一個是數據本身,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳。

Datanode啟動后想namenode注冊,通過后,周期性(1小時)的向namenode上報所有的塊信息。

心跳是每3秒一次,心跳返回結果帶有namenode給該Datanode的命令如復制塊數據到另一台機器,或刪除某個數據塊。如果超過10分鍾沒有收到某個Datanode的心跳,則認為該節點不可用。

集群運行中可用安全加入和退出一些機器。

文件切分成塊,(默認大小128M),以塊為單位,每個塊有多個副本存儲在不同的機器上,副本數可在文件生成時指定(默認3)

Datanode再本地文件系統存儲文件塊數據,以及塊數據的校驗和。

可以創建,刪除,移動和重命名文件,當文件創建,寫入和關閉之后不能修改文件的內容。

當Datanode讀取block的時候,它會計算checksum,如果計算后的checksum,與block創建時值不一樣,說明該block已經損壞。

如果塊已損壞,Client會讀取其它Datanode上的block.

namenode標記該塊已經損壞,然后復制block達到預期設置的文件備份數。

Datanode在其文件創建后三周驗證其checksum.


免責聲明!

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



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