目前hadoop-3.1 共支持5 种纠删码策略,分别是:
RS-10-4-1024k:
使用RS 编码,每10 个数据单元(cell),生成4 个校验单元,共14 个单元,也就是说:这14 个单元中,只要有任意的10 个单元存在(不管是数据单元还是校验单元,只要总数=10),就可以得到原始数据。
每个单元的大小是1024k=10241024=1048576。
存储的空间冗余率为(10+4)/10 = 1.4
RS-3-2-1024k:
使用RS 编码,每3 个数据单元,生成2 个校验单元,共5 个单元,也就是说:这5 个单元中,
只要有任意的3个单元存在(不管是数据单元还是校验单元,只要总数=3),就可以得到原始数据。
每个单元的大小是1024k=10241024=1048576。
存储的空间冗余率为(3+2)/3 = 1.6
RS-6-3-1024k:
使用RS 编码,每6 个数据单元,生成3 个校验单元,共9 个单元,也就是说:这9 个单元中,
只要有任意的6 个单元存在(不管是数据单元还是校验单元,只要总数=6),就可以得到原始数
据。
每个单元的大小是1024k=10241024=1048576。
存储的空间冗余率为(6+3)/6 = 1.5
RS-LEGACY-6-3-1024k:
策略和上面的RS-6-3-1024k 一样,只是编码的算法用的是rs-legacy,之前遗留的rs 算法。
XOR-2-1-1024k:
使用XOR 编码(速度比RS 编码快),每2个数据单元,生成1 个校验单元,共3 个单元,也就是
说:这3个单元中,只要有任意的2个单元存在(不管是数据单元还是校验单元,只要总数=2),就可以得到原始数据。
每个单元的大小是1024k=10241024=1048576。
存储的空间冗余率为(2+1)/2 = 1.5
-----其他说明-----
以RS-6-3-1024k 为例,6 个数据单元+3 个校验单元,可以容忍任意的3 个单元丢失,冗余的数据
是50%。
而采用副本方式,3 个副本,冗余200%,却还不能容忍任意的3 个单元丢失。(因为有可能副本刚好都在那3个节点上)
因此,RS 编码在相同冗余度的情况下,会大大提升数据的可用性,而在相同可用性的情况下,会
大大节省冗余空间




