一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
DataNode 启动后向 NameNode 注册,通过后,周期性(1 小时)的向 NameNode上报所有的块信息。
心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台机器,或删除某个数据块。如果超过 10 分钟没有收到某个 DataNode 的心跳,则认为该节点不可用。
集群运行中可以安全加入和退出一些机器。
若 DataNode 节点上的数据出现损坏,显然会造成一些不必要的损失。如何保证 DataNode 节点的数据完整性十分有必要,检验流程如下:
默认的dfs.namenode.heartbeat.recheck-interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。可在hdfs-site.xml配置文件中进行修改二者的值,值得注意的是,heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。
<property>
<name>dfs.namenode.heartbeat.recheck-intervalname>
<value>300000value>
property>
<property>
<name>dfs.heartbeat.intervalname>
<value>3value>
property>
DataNode 可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本
具体配置方法:
<property>
<name>dfs.datanode.data.dirname>
<value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}
/dfs/data2value>
property>
[pbh@hadoop102 hadoop-3.1.3]$ rm -rf data/ logs/
[pbh@hadoop103 hadoop-3.1.3]$ rm -rf data/ logs/
[pbh@hadoop104 hadoop-3.1.3]$ rm -rf data/ logs/
[pbh@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode –format
[pbh@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
[pbh@hadoop102 dfs]$ ll
总用量 12
drwx------. 3 pbh pbh 4096 4 月 4 14:22 data1
drwx------. 3 pbh pbh 4096 4 月 4 14:22 data2
drwxrwxr-x. 3 pbh pbh 4096 12 月 11 08:03 name1
drwxrwxr-x. 3 pbh pbh 4096 12 月 11 08:03 name2