【发布时间】:2015-05-31 21:28:44
【问题描述】:
编辑 - TL;DR:
所有副本节点是否必须在写入 HDFS 被视为成功之前存储文件(其所有块)?如果是,复制因子是否会影响写入延迟?
原问题:
在Hadoop 2 中,我可以通过将dfs.replication 属性设置为大于1 的值来控制数据块副本的数量(在EMR 等一些hadoop 发行版中,默认值并不总是3)。
据我了解,HDFS 的行为是同步写入第一个副本,而其他副本是流水线的,并且复制以异步方式发生。它是否正确?
如果上述情况属实,那么如果第一个节点向 namenode 发送 ack,然后在能够完成异步复制之前被陨石击中,则始终存在数据丢失的风险。
有没有办法保证至少有 X 个节点在写入成功之前写入该块?这样做是否可取?我虽然可以通过使用dfs.namenode.replication.min 属性来控制它,但我读到它只在“安全模式”下使用,因此在正常操作期间无法提供帮助。
【问题讨论】:
标签: hadoop mapreduce hdfs replication