DataNode
DataNode心跳机制
- DN第一次启动的时候(全新的状态下),会向NN注册
- 注册成功之后,每周期(时间可变)向NN上报块信息
- 每3秒发送以此心跳:心跳返回结果导游NN给该2DN的命令
- 如果有DN与NN失联了,NN超过10分钟没有收到来自DN的心跳,则认为该节点不可用
- DN进程死亡或者网络故障造成DN无法与NN通信
- NN不会立即把该节点判定为死亡,要经过一段时间,这段称作超时时长
- HDFS默认超时时长为10分钟+30秒
- 超时时长(TimeOut)计算公式为:2 * dfs.namenode.heartbeat.recheck-interval(重新检查心跳间隔默认5分钟) + dfs.heartbeat.interval(心跳默认3秒)
校验和
DataNode的数据完整性
IO操作过程中难免会出现数据丢失或脏数据,数据传输得量越大出错得几率越高。同理DataNode节点上的数据损坏了,如果没有发现,是很危险的,那么DN是如何解决的
- 当DN读取块儿的时候,它会计算CheckSum(一般数据用crc校验,元数据用md5)。
- 如果计算后的CheckSum,与块创建时值不一样,说明其已经损坏。
- Client读取其他DN上的块。
- DN在其创建后周期性验证CheckSum。