編輯 - TL; DR:HDFS複製因子 - 最大限度地減少數據丟失的風險
做所有副本節點必須存儲到HDFS寫被認爲是成功的前一個文件(所有塊)?如果是這樣,複製因素是否會影響寫入延遲?
原始的問題:
在Hadoop 2
我可以由dfs.replication
屬性設置爲大於1的值來控制數據塊的副本數(默認爲不總是在一些hadoop的分佈等EMR 3)。
我的理解是HDFS行爲是同步寫入第一個副本,而其他行爲是管道化的,並且複製是以異步方式進行的。它是否正確?
如果以上情況屬實,那麼如果第一個節點向名稱節點發送ack,然後在能夠完成異步複製之前被隕石擊中,則總會有數據丟失的風險。
有沒有辦法保證在寫入被認爲成功之前至少有X個節點寫入該塊?這樣做是明智的嗎?我雖然我可以通過使用dfs.namenode.replication.min
屬性來控制這一點,但我讀到它僅在「安全模式」下使用,因此在正常操作期間無法幫助。
因此,增加複製因子意味着寫入速度較慢?對於非HA羣集,您能否指出我在任何特定文檔中指出,在寫入被認爲成功之前,所有副本都需要檢查所有塊?你的第一塊提到數據包而不是副本。謝謝! – Gevorg