一、動機
DecodingValidator是在HDFS-15759中引入的一個用于校驗EC數(shù)據(jù)重構(gòu)正確性的組件。
先說下引入DecodingValidator的動機,據(jù)很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,這些目前都已經(jīng)fix了)反饋,
EC在重構(gòu)的時候可能會有各種各樣的問題,導(dǎo)致數(shù)據(jù)錯誤,造成block corrupt。
直接拋異常的問題還好處理,重試或者bugfix就好了,最致命的是不報錯,正常重構(gòu),但是數(shù)據(jù)內(nèi)容不正確。這就很嚴重了。
這就是做DecodingValidator的動機。
二、基本原理及示例
基本原理:
第一步:使用解碼后的輸出作為新的輸入再進行解碼
第二步:將解碼得到的結(jié)果與原始輸入進行比較
示例說明:
以RS-6-3為例,假設(shè)原始數(shù)據(jù)塊是 [d0, d1, d2, d3, d4, d5],校驗塊是 [p0, p1, p2]。
假設(shè)我們丟失了 d1 和 p1,使用 [d0, d2, d3, d4, d5, p0] 作為輸入,解碼得到了 [d1, p1] 作為輸出。