一、DataNode工作机制
1、一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳
2、DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息
3、心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用
4、集群运行中可以安全加入和退出一些机器
二、数据完整性
以下是DataNode节点保证数据完整性的方法。
1、当DataNode读取Block的时候,它会计算CheckSum
2、如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏
3、Client读取其他DataNode上的Block
4、常见的校验算法crc(32),md5(128),sha1(160)
5、DataNode在其文件创建后周期验证CheckSum
三、掉线时限参数设置
1、DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信,NameNode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长,HDFS默认的超时时长为10分钟+30秒
2、如果定义超时时间为TimeOut,则超时时长的计算公式为:
TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
- hdfs-site.xml配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒