每个DataNode定时向NameNode发送Heartbeat消息。 为了datanode失效的超时时间过长,要从datanode的日志中向前推10分钟左右看看是否有异常发生 主节点发起检测超过阈值后,进行block转移 通过md5的方式对数据的完整性进行校验 HDFS数据块存储在以blk_为前缀的文件中,每个块有一个相关联的.meta后缀的元数据文件,元数据文件包括头部和该块个区段的一系列的校验和。
当文件报损坏时
如果是.meta数据损坏,blk数据没有损坏,那么可以把这个文件get下来,删除原来的文件,重新上传一次。(可以看一下这个文件所有的blk,如果是明文,可以把这些文件cat 在一起,最终拼接成文件) 每个块属于一个数据块池(blockpoolID),每个数据块池都有自己的存储目录,目录根据数据块池ID形成(该ID和namenode的VERSION文件中的数据块池ID相同)
当目录中的数据块数量增加到一定规模时,datanode会创建一个子目录来存放新的数据块及其元数据信息,如果当前已经存储了64个(dfs.datanode.numblocks设置)数据块时,就会创建一个子目录,避免很多文件放在同一个目录中
如果dfs.datanode.data.dir属性指定了不同磁盘的多个目录,那么数据块会以轮转的方式写到各个目中,注意,同一个datanode上的每个磁盘上块不会重复,只有不同datanode之间的块才有可能重复