HDFS Erasure coding-纠删码介绍和原理
- 三副本策略弊端
- Erasure Coding(EC)简介
- Reed- Solomon(RS)码
- EC架构
三副本策略弊端
- 为了提供容错能力,hdfs回根据replication factor(复制因子)在不同的datanode上复制文本块
- 默认复制因子为3,(注意这里的3指的是1+2=3,不是额外3个),则原始块除外,还将有额外两个副本。每个副本使用100%的存储开销,因此导致200%的存储开销。这些副本也消耗其他资源,例如网络带宽
- 在复制因子为N时,存在N-1个容错能力,但存储效率仅为1/N
Erasure Coding(EC)简介
- 纠删码技术简称EC,是一种编码容错技术。最早用于通信行业,数据传输中的数据恢复。它通过对数据进行分块,然后计算出校验数据,是的各个部分的数据产生关联性。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块
- Hadoop3.0之后引入了纠删码技术,它可以提高50%以上的存储利用率,并且保证数据的可靠性
Reed- Solomon(RS)码
- reed-solomon(rs)码是常用的一种纠删码,它有两个参数k和m,记为RS(k,m)
- k个数据块组成一个向量被乘上一个生成矩阵(Generator Matrix)GT从而得到一个码字(codeword)向量,该向量由k个数据块(d0,d1…d3)和m个校验块(c0,c1)组成
- 如果数据块丢失,可以用GT逆矩阵乘以码字向量来恢复出丢失的数据块。
EC架构
为了支持纠删码,HDFS体系结构进行了一些更改调整
- namenode扩展
- 条带化的HDFS文件在逻辑上由block group(块组)组成,每个块组包含一定数量的内部块。这允许在块组级别而不是块级别进行文件管理
- 客户端扩展
- 客户端的读写路径的到来增强,可以并行处理块组中的多个内部块
- datanode扩展
- datanode运行一个附加的ECWorker任务,以对失败纠删编码块进行后台恢复。namenode检测到是吧的EC块,然后namenode选择一个datanode进行恢复工作
- 纠删码策略
为了适应异构的工作负载,允许HDFS集群中的文件和目录具有不同的复制和纠删码策略。纠删码策略封装了如何对文件进行编码/解码。默认情况下启用RS-6-31024k策略,RS便是编码算法Reed-Solomon,6,3中表示数据块和奇偶校验块的数量,1024k表示条带化单元的大小
目录上还支持默认的REPLICSTION方案。它只能在目录上设置,以强制目录采用3倍复制方案,而不是继承器族乡的纠缠吗策略。此策略可以是3x复制方案目录与纠错码目录交错。REPLICSTION始终处于穷状态
此外也支持用户通过XML文件定义自己的EC策略,Hadoop conf目录中有一个名为uers_ec_policies.xml.template的示例EC策略XML文件,用户可以参考该文件 - Inter ISA-L
英特尔ISA-L代表英特尔智能存储加速库。isa-l是针对存储应用程序而优化的低级功能开源集合。它包括针对Intel AVX和AVX2指令优化的快速块Reed- Solomon类型擦除代码。HDFS纠删码可以利用ISA-L加速编码和加码计算