1

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

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

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

4

3 回答 3

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.intervalheartbeat.interval的默认值为 3 秒。

于 2012-01-10T16:31:23.740 回答
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,此参数可能会有所不同。以下是如何检查您是否使用了正确的参数:设置它们后,启动您的 master,并检查以下位置的配置:

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 秒后被删除。

于 2013-11-07T15:02:50.803 回答
0

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

于 2013-09-26T04:49:54.620 回答