7_纠删码

本文详细介绍了纠删码(Erasure Coding/EC)在HDFS中的应用,包括背景、原理、块存储方式、NameNode和Client端的扩展,以及配置和策略。纠删码作为RAID和副本之外的第三种选择,可以在提高存储效率的同时提供高数据持久性,尤其适合大规模分布式存储。文章还讨论了条带化布局、DataNode的扩展和EC策略的配置,以及如何使用Intel ISA-L提升性能。

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

2020/11/4 sunhaiqi@bonc.com.cn

一、纠删码(Erasure Coding/EC)

1.1背景

​ 从存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID,副本一直是当仁不让的最终选择。而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围,成为RAID,副本之外的第三种选择,因此也获得了越来越多的关注。

​ 从传统情况来看,RAID通常用在企业级环境里较多,在几台和十几台存储设备规模的IT系统中,一向是使用稳定可靠历经数十年磨砺的RAID技术。而在数据中心级的大规模部署中,RAID不再受欢迎,大部分的分布式系统都偏好副本模式,看重的是其高可靠性和读性能优化的特点。然而副本带来的成本压力实在是有些吃不消,这时候Erasure Code适时出现,以更低成本和更高技术含量提供近似可靠性这几点,就吸引到了众多分布式存储/云存储的厂商和用户。

  • RAID(独立磁盘冗余阵列)

​ 把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了[平均故障间隔时间(MTBF),储存冗余数据也增加了容错。

​ RAID技术主要有以下三个基本功能:

(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。

(2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。

(3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。

  • 副本

​ HDFS通过多副本机制来保证。在HDFS中的每一份数据都有两个副本,1TB的原始数据需要占用3TB的磁盘空间,存储利用率只有1/3。而且系统中大部分是使用频率非常低的冷数据,却和热数据一样存储3个副本,给存储空间和网络带宽带来了很大的压力。

  • 纠删码

​ 纠删码技术简称EC,本身是一种编码容错技术,最早是在通信行业解决部分数据在传输中损耗的问题,它的基本原理是把传输的信号分段,加入一定的校验再让各段间发生一定的联系,即使在传输过程中丢失掉部分信号,接收端仍然能通过算法把完整的信息计算出来。

​ 如果严格的区分,实际上按照误码控制的不同功能,可分为检错、纠错和纠删三种类型。

(1)检错码:识别错码

(2)纠错码:识别错码,纠正错码

(3)纠删码:识别错码,纠正错吗,删除超出纠正范围的错码

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

1.2纠删码原理

Reed-Solomon(RS)码是存储系统较为常用的一种纠删码,它有两个参数k和m,记为RS(k,m)。如下图所示,k个数据块组成一个向量D被乘上一个生成矩阵B从而得到一个码字向量,该向量由k个数据块和m个校验块构成。如果一个数据块丢失,可以用(GT)-1乘以码字向量来恢复出丢失的数据块。RS(k,m)最多可容忍m个块(包括数据块和校验块)丢失。

  • RS(k,m)计算方法

以冗余级别为5+3的纠删码为例说明。将n个源数据块D1~Dn按列排成向量D,再构造一个(n+m)n矩阵B (图2),B称为分布矩阵。对矩阵B有一个要求:它的任意n个行向量都是相互独立的,即这n个行向量组成的nn矩阵可逆。

(由线性代数知道,对互不相等的实数a1,a2,…,ak(k≥n),矩阵V的任意n行组成的矩阵都可逆。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQd5SoAx-1615003886048)(C:\Users\19701\AppData\Roaming\Typora\typora-user-images\1604628681164.png)]

从矩阵V中取出m行,用做分布矩阵B的下部m行,恰好满足对B的要求:任意n行都相互独立。例如冗余级别为5+3纠删码的分布矩阵B可以采用如下形式。

​ 图2

执行矩阵向量乘B*D,得到m个校验块C1~ Cm(图3)。

在这里插入图片描述

​ 图3

  • 数据恢复算法

(1)假设m个硬盘发生了故障,即图4中的数据块D1、D4、C2丢失,需要从剩下的n个数据块中恢复出来源数据D1~Dn

在这里插入图片描述

​ 图4

(2)从矩阵B中将剩余数据块对应的行向量挑出来,组成新矩阵B’,B’乘以向量D的结果恰好是未故障的数据块(图5)

在这里插入图片描述

​ 图5

(3)因为B的任意n行组成的矩阵都可逆,所以矩阵B’存在逆矩阵,记为B’-1,显然有B’-1*B’=E(单位矩阵乘任何矩阵B都等于B)。

在这里插入图片描述

(4)将图5公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值