【HDFS】切主后关于BlockManager中几个队列(例如pendingReconstruction)的初始化

171 篇文章 147 订阅 ¥29.90 ¥99.00
集群升级时出现UnderReplicationBlocks告警,观察到NameNode监控中pendingReconstruction和neededReconstruction队列值波动。问题源于切主操作,触发ActiveState进入流程,遍历blocksMap并调整块的复制状态。切主瞬间,部分文件块未处理完毕,导致队列填充。待块汇报完成后,队列恢复正常。优化方案:寻找在块状态正常后再执行的方法,但优先级不高。
摘要由CSDN通过智能技术生成

背景:

集群升级的时候,触发了一个UnderReplicationBlocks数的告警。
查看一下NameNode的监控,发现14:45分左右有几个队列的值突增,随后降下去了。
例如:pendingReconstruction、neededReconstruction等。

因为怀疑是切主导致,因此找对应的逻辑。
方法调用链路如下:

ActiveState#enterState -> startActiveServices -> initializeReplQueues -> processMisReplicatedBlocks -> processMisReplicatesAsync

在processMisReplicatesAsync里会对blocksMap里的所有块进行迭代,鉴定它是不是副本数超了或者副本数低了,然后根据不同的状态放到各自的队列里。

  /*
   * Since the BlocksMapGset does not throw the ConcurrentModificationException
   * and supports further iteration after modification to list, there is a
   * chance of missing the newly added block while iterating. Since every
   * addition to blocksMap will check for mis-replication, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叹了口丶气

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值