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

简介: 紧急扩散!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 也给出了详细的分析和修复建议:


640.png

640.png

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影响。


相关文章
|
存储 SQL 运维
一篇文章彻底理解 HDFS 的安全模式
一篇文章彻底理解 HDFS 的安全模式
|
6月前
|
存储 固态存储 文件存储
[hadoop3.x]HDFS存储类型和存储策略(五)概述
[hadoop3.x]HDFS存储类型和存储策略(五)概述
117 1
|
3月前
|
分布式计算 安全 Hadoop
HDFS NAMENODE 安全模式
HDFS NAMENODE 安全模式
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的核心机制理解的副本策略
在 Hdfs 中,数据的复制和原理是基于块的分布式存储。
100 1
|
安全
HDFS 的安全模式
HDFS 的安全模式
157 0
|
监控 开发工具 开发者
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
快速学习网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
|
存储 分布式计算 Hadoop
HDFS的副本放置策略及机架感知
副本放置策略的基本思想是: 第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。 第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。 第三个副本和第二个在同一个机架,随机放在不同的node中。
|
存储 分布式计算 安全
Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式
Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式
492 0
Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式
|
存储 分布式计算 安全
HDFS 安全模式| 学习笔记
快速学习 HDFS安全模式
102 0
|
存储 分布式计算 资源调度
带你入坑大数据(二) --- HDFS的读写流程和一些重要策略
HDFS的读写流程分析,高可用和联邦的一些简短说明