【HDFS】超詳細(xì)講解Erasure Coding-- EC架構(gòu)及圖解相關(guān)核心代碼领突。

通過本文可以獲得如下知識:
① XOR碼茅坛、RS碼的基本原理和恢復(fù)過程實(shí)例。
② 圖解HDFS EC中block group(塊組)的概念弄喘、圖解striped layout(條帶布局)和連續(xù)布局玖喘,以及它們的優(yōu)缺點(diǎn)比較。用一個實(shí)例一步一步分析divideByteRangeIntoStripes方法生成的cells蘑志、ranges累奈、striped數(shù)組。
③ HDFS EC的核心源碼流程急但。
④ HDFS EC優(yōu)勢與劣勢费尽。

一、準(zhǔn)備工作

在存儲系統(tǒng)中羊始,糾刪碼技術(shù)主要是通過利用糾刪碼算法將原始的數(shù)據(jù)進(jìn)行編碼得到校驗(yàn)旱幼,并將數(shù)據(jù)和校驗(yàn)一并存儲起來,以達(dá)到容錯的目的突委。

1.1 幾個專業(yè)術(shù)語

  • Legacy coder: 遺留版本的Java RS碼柏卤,起源于Facebook的HDFS-RAID項(xiàng)目。

  • ISA-L: 實(shí)現(xiàn)RS算法的英特爾存儲加速庫匀油,為Intel指令集如SSE缘缚、AVX、AVX2和AVX-512提供性能優(yōu)化敌蚜。

  • ISA-L coder: 利用Intel ISA-L庫的本地(native)RS編碼器桥滨。

  • New Java coder: Reed-Solomon算法的純Java實(shí)現(xiàn)(適用于沒有所需CPU型號的系統(tǒng))。這個編碼器與ISA-L編碼器兼容弛车,還利用了JVM的自動向量化特性齐媒。

1.2 XOR碼(異或碼)

異或運(yùn)算:相同為0,不同為1。

滿足如下兩個運(yùn)算律:
交換律: B1⊕ B2 = B2⊕ B1
結(jié)合律: B1⊕ [B2⊕ B3] = [B1⊕ B2]⊕ B3

例如:

1 ⊕ 1 = 0;
0 ⊕ 0 = 0;
1 ⊕ 0 = 1;
0 ⊕ 1 = 1;
0 ⊕ 1 ⊕ 1 = 0;

現(xiàn)在我們假設(shè)下面式子中某一位丟失了纷跛。比如第一位0數(shù)據(jù)丟失了

0 ⊕ 1 ⊕ 1 = 0;

丟失后變成:

? ⊕ 1 ⊕ 1 = 0;

我們怎么恢復(fù)0這個數(shù)據(jù)呢喻括?這時候可以利用異或的結(jié)合律了。

? ⊕ 1 ⊕ 1 = ? ⊕ (1 ⊕ 1) = ? ⊕ 0 = 0

因此缺失的數(shù)據(jù)為0贫奠。

但是異或碼過于簡單了唬血,存在可容忍錯誤過少的問題望蜡。例如如果我們丟失了2位的數(shù)據(jù),那就沒法恢復(fù)了拷恨。而在實(shí)際的場景下脖律,肯定會發(fā)生多個數(shù)據(jù)丟失的問題的,因此需要引入其他的糾刪碼來幫助我們解決這個問題腕侄。比如后面正文會介紹到的RS碼等小泉。

二、Reed Solomon Encoding(RS碼)

RS碼兜挨,中文名稱里德所羅門編碼。是EC編碼中一種眯分。本小節(jié)先介紹RS碼的基本思想拌汇,然后通過一個運(yùn)算實(shí)例幫助理解RS的工作原理。

RS碼是存儲系統(tǒng)較為常用的一種糾刪碼弊决,它有兩個參數(shù) k和 m噪舀,記為RS(k,m)飘诗。k代表的是data cell數(shù)據(jù)塊的數(shù)量,m代表的是parity cell塊的數(shù)量,parity cell可理解為校驗(yàn)塊,因?yàn)樗怯蓴?shù)據(jù)塊進(jìn)行編碼運(yùn)算后產(chǎn)生的与倡。

RS碼的基本思想:

  1. 將k塊原始的數(shù)據(jù)元素通過一定的編碼計算,得到 m 塊校驗(yàn)元素昆稿;
  2. 對于這k+m塊元素纺座,當(dāng)其中任意的m塊元素出錯(包括數(shù)據(jù)和校驗(yàn)出錯),均可以通過對應(yīng)的重構(gòu)算法恢復(fù)出原來的k塊數(shù)據(jù);
  3. 生成校驗(yàn)的過程被成為編碼(encoding)溉潭,恢復(fù)丟失數(shù)據(jù)塊的過程被稱為解碼(decoding)净响。

如上圖所示:

  • k個數(shù)據(jù)塊組成一個向量被乘上一個生成矩陣(Generator Matrix)GT(G的轉(zhuǎn)置矩陣)從而得到一個碼字(codeword)向量,該向量由k個數(shù)據(jù)塊和m個校驗(yàn)塊構(gòu)成;
  • 如果一個數(shù)據(jù)塊丟失喳瓣,可以用(GT)-1(G的轉(zhuǎn)置矩陣的逆矩陣馋贤,這個需要一些線性代數(shù)的知識。兩邊同時左乘這個逆矩陣畏陕,就能將GT消掉)乘以碼字向量來恢復(fù)出丟失的數(shù)據(jù)塊配乓;
  • RS(k,m)最多可容忍m 個塊(包括數(shù)據(jù)塊和校驗(yàn)塊)丟失惠毁。

RS碼數(shù)據(jù)恢復(fù)實(shí)例:

我們以RS(5,3)為例來計算:

\begin{bmatrix} 1&0&0&0&0\\ 0&1&0&0&0\\ 0&0&1&0&0\\ 0&0&0&1&0\\ 0&0&0&0&1\\ 1&1&1&1&1\\ 1&2&3&4&5\\ 1&4&9&16&25\\ \end{bmatrix} \cdot \begin{bmatrix} 1\\ 5\\ 7\\ 5\\ 5\\ \end{bmatrix} = \begin{bmatrix} 1\\ 5\\ 7\\ 5\\ 5\\ 23\\ 77\\ 289\\ \end{bmatrix}

其中犹芹,1,5鞠绰,7羽莺,5,5為數(shù)據(jù)塊洞豁,23盐固,77荒给,289為范德蒙矩陣(可百度一下這個矩陣)生成的校驗(yàn)塊。現(xiàn)在我們來看下刁卜,23, 77, 289這三個校驗(yàn)塊到底能不能在丟失數(shù)據(jù)塊的時候?qū)?shù)據(jù)恢復(fù)出來志电。

假設(shè)在一個極端情況下,五個數(shù)據(jù)塊丟失了三個蛔趴,也就是可以容忍的最大數(shù)量挑辆,比如,丟失了數(shù)據(jù)塊的前三個數(shù):1孝情,5鱼蝉,7。此時把丟失的數(shù)據(jù)塊和其對應(yīng)的生成矩陣的行去掉箫荡,然后用生成矩陣的逆矩陣乘以校驗(yàn)塊和剩余的數(shù)據(jù)塊組成的矩陣魁亦。

\begin{bmatrix} 0&0&0&1&0\\ 0&0&0&0&1\\ 1&1&1&1&1\\ 1&2&3&4&5\\ 1&4&9&16&25\\ \end{bmatrix} ^{-1} \cdot \begin{bmatrix} 5\\ 5\\ 23\\ 77\\ 289\\ \end{bmatrix} = \begin{bmatrix} 1\\ 5\\ 7\\ 5\\ 5\\ \end{bmatrix}

還有 85% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
支付 ¥2.00 繼續(xù)閱讀
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市羔挡,隨后出現(xiàn)的幾起案子洁奈,更是在濱河造成了極大的恐慌,老刑警劉巖绞灼,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件利术,死亡現(xiàn)場離奇詭異,居然都是意外死亡低矮,警方通過查閱死者的電腦和手機(jī)印叁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來军掂,“玉大人喉钢,你說我怎么就攤上這事×寄罚” “怎么了肠虽?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長玛追。 經(jīng)常有香客問我税课,道長,這世上最難降的妖魔是什么痊剖? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任韩玩,我火速辦了婚禮,結(jié)果婚禮上陆馁,老公的妹妹穿的比我還像新娘找颓。我一直安慰自己,他們只是感情好叮贩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布击狮。 她就那樣靜靜地躺著佛析,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彪蓬。 梳的紋絲不亂的頭發(fā)上寸莫,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音档冬,去河邊找鬼膘茎。 笑死,一個胖子當(dāng)著我的面吹牛酷誓,可吹牛的內(nèi)容都是我干的披坏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盐数,長吁一口氣:“原來是場噩夢啊……” “哼棒拂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娘扩,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤着茸,失蹤者是張志新(化名)和其女友劉穎壮锻,沒想到半個月后琐旁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猜绣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年灰殴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掰邢。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡牺陶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辣之,到底是詐尸還是另有隱情掰伸,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布怀估,位于F島的核電站狮鸭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏多搀。R本人自食惡果不足惜歧蕉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望康铭。 院中可真熱鬧惯退,春花似錦、人聲如沸从藤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叠荠,卻和暖如春匿沛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背榛鼎。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工逃呼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人者娱。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓抡笼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親黄鳍。 傳聞我的和親對象是個殘疾皇子推姻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容