DataNode工作机制

(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本省,一个是元数据包括数据块的长度,块数据的校验和以及时间戳。
(2)DataNode启动后向NameNode注册,通过后,周期行(6小时)的向NameNode上报所有块的信息。
DataNode向NameNode汇报消息的时间间隔,默认是6小时[hdfs-default.xml]
<property>
<name>dfs.blockreport.intervalMsec</name>
<value>21600000</value>
<description>Determines block reporting interval in milliseconds.</description>
</property>
DataNode扫描自己节点块信息列表的时间,默认6小时[hdfs-default.xml]
<property>
<name>dfs.datanode.directoryscan.interval</name>
<value>21600s</value>
<description>Interval in seconds for Datanode to scan data directories and reconcile the difference between blocks in memory and on the disk.
Support multiple time unit suffix(case insensitive), as described
in dfs.heartbeat.interval.
</description>
</property>
(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如复制块数据到另一台机器或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器。
数据完整性
1)当DataNode读取Block的时候,它会计算CheckSum
2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏
3)Client读取其他DataNode上的Block
4)常见的校验算法crc(32),md5(128),sha1(160)。Hadoop底层采用crc(32)校验。
5)DataNode在其文件创建后周期验证checksum。
DN掉线时限参数设置
1 DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信
2 NameNode不会立即把该节点判定为死亡,要经历一段时间,这段时间称作超时时长。
3 HDFS默认的超时时长为10分钟+30秒
如果定义超时时间为TimeOut,则超时时间计算公式为:
TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval+10 * dfs.heartbeat.interval;
dfs.namenode.heartbeat.recheck-interval:默认为5分钟,dfs.heartbeat.interval默认为3秒。
heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
小结
通过本节学习,我们了解到DataNode的工作机制。至此我们完成hdfs的初步学习,通过hdfs的学习,我们了解到以下几点:
- hadoop默认块的大小是128M,块的大小和磁盘有关,固态硬盘可以设置256M
- 学习HDFS的读写流程,hdfs的读写流程作为核心需要理解记忆。
- 学习NameNode和DataNode的工作机制
通过上面学习,可以积累一些hadoop中关于hdfs知识,为下面学习mapreduce奠定一个基础。
网友评论