【HDFS】EC写数据时checkStreamerFailures逻辑

本文详细探讨了HDFS Erasure Coding(EC)在写数据过程中`checkStreamerFailures`方法的目的和调用时机。该方法主要用于在关闭流或每个条带写入完成后,检查streamer的健康状况,处理写入失败的情况,如更新block的GS值,更新pipeline,并在失败的streamer数量超过parity block数量时抛出异常,终止写入。调用点包括写满cell后结束Block Group、条带满时、以及关闭流时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文试图弄清楚以下问题:

  • checkStreamerFailures方法主要目的是做什么的?
  • checkStreamerFailures方法的调用点(调用时机、条件)?
  • checkStreamerFailures及其周边函数的逻辑。

RQ1:checkStreamerFailures方法主要目的是做什么的?

此方法的目的是在close流或者每次写完一整个stripe时,对streamer做健康判断。
因为cell是ec写的最小单位,那每次一个条带包含6+3个cell,在这一个条带写入的过程中,如果有写入失败的streamer就要做一些额外工作。
例如:

  • 调用updateBlockForPipeline RPC来把block的GS值更新。
  • 等待
  • 调用updatePipeline RPC来把这个block的写入pipeline的datanode列表进行更新。(NN侧会通过setExpectedLocations方法更新ReplicaUnderConstruction[] replicas
  • 检查如果总计失败的streamer数超过parity block数,抛IOE,关闭所有streamer,写文件失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据技术部落

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

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

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

打赏作者

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

抵扣说明:

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

余额充值