HDFS冗余数据块的自动删除

Posted dotzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS冗余数据块的自动删除相关的知识,希望对你有一定的参考价值。

阅读文本大概需要 2 分钟。


日常维护 Hadoop 集群的过程中会发现这样一种情况。


某个节点由于网络故障或者 DataNode 进程死亡,被 NameNode 判定为死亡,HDFS 马上自动开始数据块的容错拷贝。当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏,所以造成了 HDFS 上某些 block 的备份数超过了设定的备份数。通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉,那么这个时间取决于什么呢?


该时间的长短跟数据块报告的间隔时间有关。Datanode 会定期将当前该结点上所有的 block 信息报告给 Namenode,参数 dfs.blockreport.intervalMsec 就是控制这个报告间隔的参数。


hdfs-site.xml 文件中有一个参数:

<property>
    <name>dfs.blockreport.intervalMsec</name>
    <value>3600000</value>
    <description>Determines block reporting interval in milliseconds.</description>
</property>


其中 3600000 为默认设置,3600000 毫秒,即 1 个小时,也就是说,块报告的时间间隔为 1 个小时,所以经过了很长时间这些多余的块才被删除掉。通过实际测试发现,当把该参数调整的稍小一点的时候(60秒),多余的数据块确实很快就被删除了。


希望,您能有收获。



一条迷途的咸鱼,

总有一天会游向属于它的天地!

以上是关于HDFS冗余数据块的自动删除的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop--HDFS特点

hdfs读写原理

HDFS安全模式

HDFS高级功能

查看修复HDFS中丢失的块

HDFS相关概念