如何获取datanode超时?

时间:2011-05-16 14:51:06

标签: hadoop hdfs

我有一个3节点的hadoop设置,复制因子为2。

当我的一个datanode死掉时,namenode会等待10分钟后再从实时节点中删除它。直到那时我的hdfs写错了从节点说错误的确认。

有没有办法设置较小的超时(如1分钟),以便立即丢弃datanode死亡的节点?

3 个答案:

答案 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秒后删除了死数据节点。