我有一个3节点的hadoop设置,复制因子为2。
当我的一个datanode死掉时,namenode会等待10分钟后再从实时节点中删除它。直到那时我的hdfs写错了从节点说错误的确认。
有没有办法设置较小的超时(如1分钟),以便立即丢弃datanode死亡的节点?
答案 0 :(得分:2)
在 hdfs-site.xml 中设置以下内容将使您暂停1分钟。
<property>
<name>heartbeat.recheck.interval</name>
<value>15</value>
<description>Determines datanode heartbeat interval in seconds</description>
</property>
如果以上操作无效 - 请尝试以下操作(似乎与版本有关):
<property>
<name>dfs.heartbeat.recheck.interval</name>
<value>15</value>
<description>Determines datanode heartbeat interval in seconds.</description>
</property>
超时等于2 * heartbeat.recheck.interval + 10 * heartbeat.interval 。 heartbeat.interval 的默认值为3秒。
答案 1 :(得分:0)
在我们使用的Hadoop版本中,应以毫秒为单位指定dfs.heartbeat.recheck.interval(检查您的Hadoop版本的代码/ doc,以验证它。)
答案 2 :(得分:0)
我成功完成了这项工作。我正在使用Hadoop版本0.2.2。
这是我添加到我的hdfs-site.xml中的内容:
<property>
<name>dfs.heartbeat.interval</name>
<value>2</value>
<description>Determines datanode heartbeat interval in seconds.</description>
</property>
<property>
<name>dfs.heartbeat.recheck.interval</name>
<value>1</value>
<description>Determines when machines are marked dead</description>
</property>
对于其他版本的Hadoop,此参数可能有所不同。以下是检查您是否使用了正确参数的方法:设置完成后,启动主服务器,然后检查配置:
http://your_master_machine:19888/conf
如果你没有找到“dfs.heartbeat.interval”和/或“dfs.heartbeat.recheck.interval”,那就意味着你应该尝试使用没有“dfs”的版本。前缀:
“heartbeat.interval”和“heartbeat.recheck.interval”
最后,要检查在所需的时间后不再使用死数据节点,请终止数据节点,然后在以下位置重复检查控制台:
http://your_master_machine:50070
对我来说,通过此处显示的配置,我可以看到在大约20秒后删除了死数据节点。