紧急扩散!HDFS-16420,极端情况下会造数据丢失

举报
数据社 发表于 2022/09/25 00:27:11 2022/09/25
【摘要】 1. HDFS-16420 BUG 概述 HDFS3.X 的 EC 纠删码功能,近期被发现有个 BUG:该 BUG 会导致,以纠删码机制存放的目录和文件,在某些特殊情况下,会被系统误删,从而造成数据丢失。 目前 HADOOP 社区已经通过 HDFS-16420 在版本 3.4.0/3.2.3/ 3.3.2 中修复了该 BUG,...

1. HDFS-16420 BUG 概述

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

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

c8099cd3085ef9367890ee5d0ad8e575.png 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的影响,进而造成了用户数据的丢失,示例命令和输出如下:


   
  1. hdfs fsck / -files | grep "erasure-coded: policy="
  2. /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 改动的源代码,并编译修复;

公众号推送规则变了

点击上方公众号名片,收藏公众号,不错过精彩内容推送!

0e7742b72f616c7c421845ec88853c9e.gif

文章来源: dataclub.blog.csdn.net,作者:数据社,版权归原作者所有,如需转载,请联系作者。

原文链接:dataclub.blog.csdn.net/article/details/123391367

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。