HDFS DataNode工作機制和數據存儲

工作機制

  • 一個數據塊在DataNode上以文件形式存儲在磁盤上,包括兩個文件:一個是數據本身,一個是元數據包括數據塊的長度,數據塊的校驗和,以及時間戳。
  • DataNode啟動後向NameNode註冊,通過後則週期性(1小時)的向NameNode上報所有的塊信息。
  • 心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令。如複製塊數據到另一臺機器,或刪除某個數據塊。如果超過10分鐘沒有收到某個DataNode的心跳,則認為該節點不可用。
  • 集群運行中可以安全加入和退出一些機器。


數據完整性

  • 當Client讀取DataNode上block的時候,會計算checksum。如果計算後的checksum,與block創建時值不一樣,說明block已經損壞。這時Client需要讀取其他DataNode上的block。
  • DataNode在其文件創建後周期驗證checksum。


掉線參數設置

DataNode進程死亡或者網絡故障造成DataNode無法與NameNode通信,NameNode不會立即把該節點判定為死亡,要經過一段時間,這段時間暫稱作超時時長。HDFS默認的超時時長為10分鐘+30秒。如果定義超時時間為timeout,則超時時長的計算公式為:

timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval

<code>dfs.namenode.heartbeat.recheck-interval 300000ms
dfs.heartbeat.interval 3s/<code>


分享到:


相關文章: