在这之前先了解一下DataNode的工作机制:
DataNode在启动后会向NameNode注册,注册成功后,DataNode会每隔一小时向NameNode上报一次自己所在节点所有的块信息。之后会每隔3s有一次心跳(与NameNode通信),心跳返回结果会带回来NameNode给该DataNode的命令。NameNode如果超过一定时间没有收到DataNode的心跳,会判定此DataNode不可用。
这个超时时长是可以设置的:
如果定义超时时间为TimeOut ,则超时时长的计算公式为:2*DataNode的心跳重新检查间隔+10*心跳间隔
TimeOut = 2 * dfs.namenode .heartbeat.recheck-interval + 10 * dfs .heartbeat.interval.
而默认的dfs.namenode .heartbeat.recheck-interval大小为5分钟, dfs.heartbeat.interval默认为3秒。
需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>