当前位置: 代码迷 >> 综合 >> HDFS 冗余数据块(Block)的自动删除
  详细解决方案

HDFS 冗余数据块(Block)的自动删除

热度:82   发布时间:2023-09-30 05:10:59.0

本文参考:

https://www.jianshu.com/p/4e4316ae0e17

https://www.jianshu.com/p/5ef70a66019a

    在日常维护Hadoop集群的过程中,发现一种情况(Block 默认3):某节点由于网络故障或者DataNode进程的死亡,被NameNode判定为死亡(此时位2),HDFS马上自动开始数据块的容错拷贝(从2到3)。当该节点重新添加到集群中时(从3到4),由于该节点上的数据没有损坏,所以造成了HDFS上的某些Block的备份数超过设定的数目。

    通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉。那么这个时间取决于什么呢?

该时间的长短跟数据块报告的时间间隔有关。DataNode会周期性的发送“心跳”信息,发送给NameNode,并携带所有的块信息。参数

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

其中,360000为默认设置,360000毫秒。即一小时,也就是说一小时为一个时间间隔去删除冗余的副本数据。可以设置其时间间隔,来调整处理冗余数据的时间。

  相关解决方案