ErasureCode是被BlockFixer和RaiNode用来生成parity块和修改parity/source块的一组件,ErasureCode实现编码和解码。当在编码时,ErasureCode取几个source字节并生成一些parity字节。当在解码时,ErasureCode通过剩余的souce字节和parity字节来生成丢失的字节。
能被恢复的丢失的字节的个数等于被创建的parity字节的个数。比如,我们把10个source字节编码成3个parity字节,我们能通过剩下的10个字节来恢复任意3个丢失的字节。
ErasureCode有两种实现:
XOR:只允许创建一个parity字节;
Reed-Solomon:允许创建任意给定数目的parity字节。
使用Reed-Solomon,source文件的副本数能减少到1而不造成数据丢失。1个块只有1个副本的不足是只能通过1个固定的机器来读取1个块,减少了并行性。因此,Reed-Solomon应该用在不会被频繁使用的数据。
相关阅读:
Ubuntu 13.04上搭建Hadoop环境