【HDFS】EC重构过程中的校验功能:DecodingValidator
一、动机
DecodingValidator是在HDFS-15759中引入的一个用于校验EC数据重构正确性的组件。
先说下引入DecodingValidator的动机,据很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,这些目前都已经fix了)反馈,
EC在重构的时候可能会有各种各样的问题,导致数据错误,造成block corrupt。
直接抛异常的问题还好处理,重试或者bugfix就好了,最致命的是不报错,正常重构,但是数据内容不正确。这就很严重了。
这就是做DecodingValidator的动机。
二、基本原理及示例
基本原理:
第一步:使用解码后的输出作为新的输入再进行解码
第二步:将解码得到的结果与原始输入进行比较
示例说明:
以RS-6-3为例,假设原始数据块是 [d0, d1, d2, d3, d4, d5],校验块是 [p0, p1, p2]。
假设我们丢失了 d1 和 p1,使用 [d0, d2, d3, d4, d5, p0] 作为输入,解码得到了 [d1, p1] 作为输出。
验证(val