HDFS DataNode
一:DataNode 工作机制

(1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据 本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
(2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上 报所有的块信息。
- DN 向 NN 汇报当前解读信息的时间间隔,默认 6 小时;
1 | <property> |
- DN 扫描自己节点块信息列表的时间,默认 6 小时;
1 | <property> |
(3)心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块 数据到另一台机器,或删除某个数据块。如果超过 10 分钟没有收到某个 DataNode 的心跳, 则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器。
二:数据完整性

思考:如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0), 但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险?同理 DataNode 节点上的数据 损坏了,却没有发现,是否也很危险,那么如何解决呢?
如下是 DataNode 节点保证数据完整性的方法。
- 当 DataNode 读取 Block 的时候,它会计算 CheckSum。
- 如果计算后的 CheckSum,与 Block 创建时值不一样,说明 Block 已经损坏。
- Client 读取其他 DataNode 上的 Block。
- 常见的校验算法 crc(32),md5(128),sha1(160);
- DataNode 在其文件创建后周期验证 CheckSum。
三:掉线时限参数设置

- 需要注意的是 hdfs-site.xml 配置文件中:
- heartbeat.recheck.interval 的单位为毫秒
- dfs.heartbeat.interval 的单位为秒
1 | <property> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱影客!



