深入剖析HDFS 3.0版本EC技术,节省一半存储但拥有三副本机制相同的容错能力

正文开始:

HDFS 3.x 数据存储新特性-纠删码

纠删码

1. EC介绍

Erasure Coding  简称 EC,中文名:纠删码

条带化技术就是一种自动将 I/O 的负载均衡到多个物理磁盘上的技术

条带化单元

2. HDFS数据冗余存储策略

HDFS的存储策略是副本机制

使用纠删码(EC)代替副本机制纠删码技术提供了与副本机制相同的容错能力,而存储空间却少得多

3. EC算法实现原理

Reed-Solomon(RS)有多少个校验块就最多可容忍多少个块(包括数据块和校验块)丢失

我们使用RS(3,2),表示使用 3 个原始数据块,2 个校验块。

矩阵乘法

docx image

GT 是生成矩阵,RS(k,m) 的生成矩阵就是 m 行 k 列的矩阵;Data 代表原始数据,7,8,9代表原始数据块;Parity 代表校验数据,50,122代表校验数据块。

容错能力相当

4. EC的应用场景

将EC技术集成进HDFS可以提高存储效率,同时仍提供与传统的基于副本的HDFS部署类似的数据持久性。例如,一个具有6个块的3副本文件将消耗 6 * 3 = 18 个磁盘空间。但是,使用EC(6个数据,3个校验)部署时,它将仅消耗9个磁盘空间块。

但是EC在编码过程及数据重建期间会大量的使用CPU资源,并且数据大部分是执行远程读取,所以还会有大量的网络开销。

对于CPU资源紧张且存储成本较低的情况下,可以采用副本机制存储数据,对于CPU资源有剩余且存储成本较高的情况下,可以采用EC机制存储数据

5. EC在HDFS的架构

HDFS 是直接使用 Online EC(以EC格式写入数据),避免了转换阶段并节省了存储空间。Online EC 还通过并行利用多个磁盘主轴来增强顺序I/O性能。在具有高端网络的群集中,这尤其理想。其次,它自然地将一个小文件分发到多个DataNode,而无需将多个文件捆绑到一个编码组中。这极大地简化了文件操作,例如删除,磁盘配额以及namespaces之间的迁移。

在一般HDFS集群中,小文件可占总存储消耗的3/4以上,为了更好的支持小文件,HDFS目前支持条形布局(Striping Layout)的EC方案,而HDFS连续布局(Contiguous Layout)方案正在开发中。

docx image

优点:

缺点:

docx image

优点:

缺点:

传统模式下 HDFS 中文件的基本构成单位是block,而EC模式下文件的基本构成单位是block group。以RS(3,2)为例,每个block group包含3个数据块,2个校验块。

HDFS对于引入EC模式所做的主要扩展如下

为了减少这些内部块对NameNode内存消耗

Client:客户端读取和写入路径得到了增强,可以并行处理block group中的多个内部块。

NameNode检测到失败的EC块, 会选择一个DataNode进行恢复工作。此过程类似于失败时如何重新恢复副本的块

纠删码策略:为了适应异构的工作负载,HDFS群集中的文件和目录允许具有不同的复制和纠删码策略。纠删码策略封装了如何对文件进行编码/解码。每个策略由以下信息定义:

通过XML文件定义自己的EC策略

Hadoop conf目录中有一个配置EC策略的XML示例文件,配置时可以参考该文件,文件名称为user_ec_policies.xml.template。

6. 集群的硬件配置

纠删码对群集在CPU和网络方面有一定的要求:

编码和解码工作会消耗HDFS客户端和DataNode上的额外CPU。

网络二等分带宽非常重要

对于机架容错,拥有至少与配置的EC条带宽度一样多的机架也很重要。对于EC策略RS(6,3),这意味着最少要有9个机架,理想情况下是10或11个机架,以处理计划内和计划外的中断。对于机架少于条带宽度的群集,HDFS无法保持机架容错,但仍会尝试在多个节点之间分布条带化文件以保留节点级容错。

7. 最后

在HDFS默认情况下,所有的EC策略是被禁止的,我们可以根据群集的大小和所需的容错属性,通过hdfs ec [-enablePolicy -policy]命令启用EC策略。

例如,对于具有9个机架的群集,像RS-10-4-1024k这样的策略将不会保留机架级的容错能力,而RS-6-3-1024k或RS-3-2-1024k可能更合适。

RS-10-4-1024k 表示有10个数据块,4个校验块。

在EC策略下,指定副本因子是没有意义的,因为它始终为1

–END–

docx image

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容