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冗余数据块的自动删除的主要内容,如果未能解决你的问题,请参考以下文章