HDFS3.X 系列的 EC 纠删码策略有个安全隐患 HDFS-16420,极端情况下会造成数据丢失

紧急扩散!HDFS3.X 系列的 EC 纠删码策略有个安全隐患 HDFS-16420,极端情况下会造成数据丢失!

1. HDFS-16420 BUG 概述

HDFS3.X 的 EC 纠删码功能,近期被发现有个 BUG:该 BUG 会导致,以纠删码机制存放的目录和文件,在某些特殊情况下,会被系统误删,从而造成数据丢失。

目前 HADOOP 社区已经通过 HDFS-16420 在版本 3.4.0/3.2.3/ 3.3.2 中修复了该 BUG,Cloudera 针对该 BUG 也给出了详细的分析和修复建议:
image

image

2. HDFS-16420 BUG 原因

该 BUG 的根本原因是,当前 NameNode 在判断某些 block 块是否有多余 replica 副本,并进而删除这些多余的 replica 副本的算法逻辑有问题,会误删某些使用了纠删码策略的文件的 EC block 块。

比如在 NameNode 发生了 fail over 之后不久,就运行了 hdfs balancer 负载均衡操作, 或者 recommission 重新上线了原先退役的某些 datanodes 节点,都有可能会造成某些 EC block 在同一个 rack 机架上有多个副本,即 over-replicated。

此时由于上述 BUG,某些 EC BLOCK 的多余的副本和原始的副本,都有可能会被错误删除。

当然在大多数情况下,上述 BUG 并不会造成用户数据的丢失,因为 HDFS 能检测到 ec block 副本的丢失,并从 ec 剩余的 data block 和 parity block 重新构建生成丢失的 ec block 副本,以补全 block。

但是,如果短时间内,某个 ec block group 中的多个 ec block,都发生了上述被误删除的问题的话,HDFS 就无法从剩余的 ec block 重新构建补全丢失的 block了, 比如 采用 RS(6,3) 纠删码策略时,如果短时间内 9 个 block 中的4个或4个以上的 block 都丢失了的话,就没有办法重新构建补全丢失的 block了,就会造成用户数据的丢失,从而造成大的影响。

3. 受 HDFS-16420 BUG 影响的 HDFS 版本

  • 当前所有没有上线上述 HDFS-16420 修复代码的基于 hadoop 3.x 系列的 HDFS,都有此 BUG, 包括 CDH 6.1.x/6.2.x/6.3.x, HDP 3.1.x,CDP Private Cloud Base 7.1.x,等等;
  • 当然,如果客户使用了上述有问题的 HDFS 版本,但没有启用 EC 纠删码策略,则完全不会受此 BUG 影响;
  • 只有在使用了上述有问题的 HDFS 版本,且配置了某些目录使用 EC 纠删码策略时,才可能会受此 BUG 影响;
  • 用户可以使用以下 fsck 命令来检查,集群中是否配置某些目录使用了 EC 纠删码策略,并确认是否有些 EC file 有 missing blocks,从而判断,是否已经收到了上述BUG的影响,进而造成了用户数据的丢失,示例命令和输出如下:
hdfs fsck / -files | grep "erasure-coded: policy="
/tmp/root/testfile.xml 583 bytes, erasure-coded: policy=RS-6-3-1024k, 1 block(s):  MISSING 1 blocks of total size 583 B

4. HDFS-16420 BUG 修复方案

  • 如果使用的是商业版的大数据平台,可以咨询供应商如何修复,一般供应商会提供升级修复或 hot-fix 修复;
  • 如果使用的是开源的大数据平台,可以升级到已经修复了该BUG的版本,如:3.4.0/3.2.3/3.3.2;
  • 如果使用的是开源的大数据平台,且暂时不方便升级版本的话,可以
    cherry-pick HDFS-16420 改动的源代码,并编译修复;
  • 最后强调下,如果集群中没有目录使用 EC 纠删码策略,则不会受到上述BUG影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

明哥的IT随笔

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值