HDFS 中向 DataNode 寫入數據失敗了怎麼辦

上傳100M的文件,上傳到50M,突然斷了,HDFS會怎麼處理?

如果向DataNode寫入數據失敗了怎麼辦?

如果這種情況發生,那麼就會執行一些操作:

① Pipeline數據流管道會被關閉,ACK queue中的packets會被添加到data queue的前面以確保不會發生packets數據包的丟失

② 在正常的DataNode節點上的以保存好的block的ID版本會升級——這樣發生故障的DataNode節點上的block數據會在節點恢復正常後被刪除,失效節點也會被從Pipeline中刪除
③ 剩下的數據會被寫入到Pipeline數據流管道中的其他兩個節點中

1、Hadoop深入學習:解析HDFS的寫文件流程
http://flyingdutchman.iteye.com/blog/1900536
在這裏插入圖片描述
2、HDFS 1. 讀寫流程剖析
https://www.jianshu.com/p/7d1bdd23c460

在這裏插入圖片描述
3、HDFS 異常處理與恢復
http://www.cnblogs.com/mindwind/p/4833098.html

Client 在寫入過程中,有 DataNode 掛了
當 Client 在寫入過程中,有 DataNode 掛了。寫入過程不會立刻終止(如果立刻終止,易用性和可用性都太不友好),取而代之 HDFS 嘗試從流水線中摘除掛了的 DataNode 並恢復寫入,這個過程稱爲 pipeline recovery。