文件讀取(流程圖):
節點距離:兩個datanode節點分別到他們最近的共同父節點距離的和(舉例:相同機架不同服務器節點距離爲2,相同機房不同機架節點距離爲4,相同數據中心不同機房節點距離爲6)
在讀取過程中如果某datanode節點宕機,就會找下一個datanode去拉取數據,並且client會記下此節點,下次讀取數據時直接跳過此節點
若拉取回的數據塊損壞,則到下一個datanode節點拉取數據,並且clien記下此節點,然後向datanode彙報此datanode節點上該數據塊有錯誤,namenode會刪除此塊,並且重新複製一份複本
這樣設計的好處是減輕namenode負擔,可以承載併發,讀取數據的主要操作全在datanode和client上,對hdfs的穩定性沒有影響
HDFS一般是存少讀多,這種情況下只要保證namenode正常工作,負載不大就可以了。
文件寫入(流程):
上傳數據時會把每個block切分成一個個的packet,chunk校驗