DataNode工作机制
(1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和时间戳。
(2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上 报所有的块信息。
(3)心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台机器(主要是datanode向namenode说"我还活着"。),或删除某个数据块。如果超过 10 分钟没有收到某个 DataNode 的心跳, 则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器
掉线时限参数设置
hdfs-default文件
- datanode进程死亡或者网络故障造成dn无法与nn通信
- nn不会立即判定节点i死亡
- 默认超时时长为10分钟+30秒
公式:TimeOut=2dfs.namenode.heartbeat.recheck-intavl+10dfs.heartbeat.intavl
默认25+103
dataNode如何保证数据一致性?
- 当dn读取block的时候,会计算checkSum
- 如果计算后的checkSum与block创建的时候不一致,说明block已经损坏
- Client读取其他datanode上的block
- 常见的校验算法crc(32),md5(128),sha1(160)
- dn在文件创建后周期验证checkSum