如何获取数据节点超时



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

当我的一个数据节点死亡时,namenode 会等待 10 分钟,然后再将其从活动节点中删除。在那之前,我的 hdfs 写入失败,说来自节点的错误确认。

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

hdfs 站点中设置以下内容.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 * 检测信号.重新检查间隔 + 10 * 检测信号间隔检测信号间隔的默认值为 3 秒。

在我们使用的Hadoop版本中,dfs.heartbeat.recheck.interval应该以毫秒为单位指定(检查你的Hadoop版本的代码/文档,以验证这一点)。

我已经设法完成了这项工作。我使用的是Hadoop版本0.2.2。

以下是我添加到我的hdfs网站的内容.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."前缀:

"心跳间隔"

和"心跳重新检查间隔"

最后,要检查死数据节点在所需时间后是否不再使用,请终止数据节点,然后在以下位置重复检查控制台:

http://your_master_machine:50070

对我来说,通过此处显示的配置,我可以看到大约 20 秒后删除了一个死数据节点。

最新更新