糾刪碼

概述

在編碼理論裏,有一種前向糾錯(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) 高   較高 較低

                                                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章