纠删码

概述

在编码理论里,有一种前向纠错(FEC)编码方式,也称为纠删码。这种技术可以将原始数据中丢失的k字节数据从n个含编码字节的信息中进行恢复。在纠删码技术中,Reed-Solomon(里所码)码是一种常见的纠删码。

纠删码的应用对于在分布式环境下数据存储的可靠性保证,有两种策略:

1)引入副本冗余机制策略 

2)利用纠删码技术,相比于副本策略,纠删码技术可以节省更多磁盘的空间。即有更高的磁盘利用率

拿Hadoop的HDFS来说,策略一般是三副本,当某个副本丢失时,可以通过其他副本复制回来。所以在这种情况下,Hadoop集群的磁盘利用率为1/3。而如果使用纠删码技术后,可以提高磁盘的利用率。

纠删码的思想上图的含义是:有n个原始数据块,再引入m个数据校验块,然后通过编码(encode)使得原始数据块和数据校验块产生关联。

纠删码技术是一种数据恢复技术,最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。它通过在原始数据中加入新的校验数据,使得各个部分的数据产生关联性。在一定范围内的数据出错情况下,通过纠删码技术都可以进行恢复。比如:有原始数据块n个,然后加入m个校验数据块。原始数据块和校验数据块在丢失时,都可以通过现有的数据块进行恢复

举例:

①x=1

②y=2

③z=3

④x+y+z=6

2x+3y+z=11

⑥x+2y+3z=14

1)如果我们丢了3个原始数据块,可以恢复

④x+y+z=6

2x+3y+z=11

⑥x+2y+3z=14

2)如果我们丢失了3个数据校验块,可以恢复

①x=1

②y=2

③z=3

3)可以

②y=2

③z=3

④x+y+z=6

2x+3y+z=11

⑥x+2y+3z=14

4)可以

③z=3

④x+y+z=6

2x+3y+z=11

⑥x+2y+3z=14

5)不可以

③z=3

⑥x+2y+3z=14

Reed-solomon codes(里所码)

概述

Reed-Solomon里所码(RS)码是存储系统较为常用的一种纠删码,也称为里所码。它有两个参数n和 m,记为RS(n,m)。n代表原始数据块个数。m代表校验块个数。接下来介绍RS码的原理。

Reed-Solomon(RS)码的编码和解码过程

1 )编码过程(encoding)

2)解码过程(decoding)

RS的优缺点:优点:低冗余度,高磁盘利用率。比如一个文件有5个文件块,假设用3副本冗余机制,最后总的文件块是15块,则磁盘利用率是:5 /15=1/ 3=33 %

而用RS码来实现,5个文件块+3个数据校验块,则磁盘利用率是:5 /8=62.5%

缺点:

1)计算代价高。 丢失数据块或者编码块时, RS需要读取n个数据块和剩余的校验块才能恢复数据。

2)数据更新代价高。 数据更新相当于重新编码, 代价很高, 因此常常针对只读数据,或者冷数据。

工程实践中,一般对于热数据还是会使用多副本策略来冗余,冷数据使用纠删码

两种冗余技术对比如下:  

两种技术 磁盘利用率 计算开销网络消耗恢复效率
多副本(3副本) 1/3 几乎没有较低较高
纠删码(n+m)n/(n+m)高  较高较低

                                                 

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值