0%

DataNode工作机制

DataNode工作机制

由于客户端是先访问NameNode来获取DataNode的信息,所以在DataNode启动时会先向NameNode进行注册,之后每隔一段时间向NameNode上报一次块信息,NameNode每隔一段时间也会向DataNode发送心跳检测来检测节点是否可用

验证数据完整性

DataNode来存储数据,如何判断所存储的数据是完整的,没有存在问题呢?

  • DataNode读取Block时,计算CheckSum
  • 如果计算出来的CheckSum和创建时不相同的话,说明Block已经损坏了

配置

在进行心跳检测时,如果超过一段时间DataNode没有回复,则认为该节点不可用,该超时时长默认为10分钟+30秒

计算公式为

1
TimeOut = 2*dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
1
2
3
4
5
6
7
8
9
10
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<!-- 单位是毫秒,即默认为5分钟 -->
<value>300000</value>
</property>

<property>
<name>dfs.heartbeat.interval</name>
<value>3s</value>
</property>