编辑 - TL; DR:HDFS复制因子 - 最大限度地减少数据丢失的风险
做所有副本节点必须存储到HDFS写被认为是成功的前一个文件(所有块)?如果是这样,复制因素是否会影响写入延迟?
原始的问题:
在Hadoop 2
我可以由dfs.replication
属性设置为大于1的值来控制数据块的副本数(默认为不总是在一些hadoop的分布等EMR 3)。
我的理解是HDFS行为是同步写入第一个副本,而其他行为是管道化的,并且复制是以异步方式进行的。它是否正确?
如果以上情况属实,那么如果第一个节点向名称节点发送ack,然后在能够完成异步复制之前被陨石击中,则总会有数据丢失的风险。
有没有办法保证在写入被认为成功之前至少有X个节点写入该块?这样做是明智的吗?我虽然我可以通过使用dfs.namenode.replication.min
属性来控制这一点,但我读到它仅在“安全模式”下使用,因此在正常操作期间无法帮助。
因此,增加复制因子意味着写入速度较慢?对于非HA群集,您能否指出我在任何特定文档中指出,在写入被认为成功之前,所有副本都需要检查所有块?你的第一块提到数据包而不是副本。谢谢! – Gevorg