HDFS EC在滴滴的实践

桔妹导读:HDFS中默认的3副本方案在存储空间和其他资源(例如网络带宽)上有200%的开销。对于冷数据,使用纠删码(ErasureCoding,EC)存储代替副本存储是一种非常不错的替代方案。EC存储在保证容错能力不低于副本存储的同时,有着更低的存储空间消耗。HDFS EC在滴滴内部稳定落地已超过半年,为公司节约了大量的存储成本。本文将介绍EC在滴滴内部的实践情况。

1. 

EC原理 

1. EC算法

EC是一种编码容错技术,最早用于通信行业数据传输中的数据恢复。Hadoop3.0版本将EC加入到HDFS中。这里简要介绍EC中使用广泛的两个算法:XOR Codes与Reed-Solomon Codes。

  • XOR Codes

XOR编码即“异或”编码,其原理是:数据编码时按照位进行异或运算,数据解码(数据恢复)时则通过结果与其他数据位进行异或操作。这里,我们不妨抽象成数学运算用于解释,例如:1 ⊕ 1 = 0 中,运算位中的任何一位丢失,则能通过另外两位计算得出,但是如果丢失两位则无法恢复。对应到HDFS中,实现该算法的EC策略是XOR-2-1-1024k,如果使用XOR编码3个数据块,则最多能容忍一个数据块丢失。该编码常用于HDFS测试。

  • Reed-Solomon Codes

Reed-Solomon Codes缩写为RS码,使用复杂的线性代数运算来生成多个奇偶校验块,因此可以容忍多个数据块故障。RS码在使用的时候需指定2个参数RS(n, m),n代表的是数据块的数量,m代表的是校验块的数量,校验块由数据块编码产生。RS编码的编码与解码原理如图1所示(网络图)。编码时,利用生成矩阵B(这里选用范德蒙单位矩阵)与数据列向量D的乘积得到信息列向量D+C;重构时,利用现存的信息列向量Survivors与对应的逆矩阵B'-1 乘积得到原数据列向量D,从而达到恢复原数据的目的。

图1 RS编码的编码与重构原理

2.HDFS EC块布局

先回顾一下3副本存储的连续存储方式(Contiguous Block Layout),3副本存储以块(Block)为单位,会将数据连续写入Block中,直至达到该Block大小(如128M)再去申请下一个Block,每个Block会有3个相同数据的副本存于3个DataNode(DN)上。连续存储示意图如图2(a)所示。HDFS EC采用条带条带式存储布局(Striping Block Layout)。条带式存储是以块组(BlockGroup)为单位,横向式地将数据保存在各个Block上,同一个Block上的不同分段的数据是不连续的。写完一个块组再申请下一个块组。条带式的存储结构图2(b)所示(图示为RS(6,3)策略下1个BlockGroup布局示意图)。

图2(a) 3副本存储示意图

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值