HDFS中的EC

HDFS中的EC

Hadoop 3.0中的HDFS擦除编码(EC)是我们在早期版本的Hadoop中遇到的问题的解决方案,这只是它的3倍复制因素,这是保护我们的数据的最简单方法,即使在Datanode失败但需要额外的存储太多了。现在,在EC存储开销中神奇地减少到50%,这是因为HDFS默认的3x复制因子而提前200%,这似乎是额外的工作/负载来存储除了原始数据块之外的两个额外块,具有相同的资源量原始数据块。

因此,在Hadoop 3.0中,使用擦除编码(EC)代替复制,这提供了更低级别的容错能力,并且存储空间更少。在典型的擦除编码(EC)设置中,存储开销不超过50%。

为了详细了解Erasure Coding,首先我想介绍两个术语: -

  1. 耐用性: - 可以容忍多少同时发生的故障?
  2. 存储效率: - 存储的多少部分用于数据?

早期复制因子为3。

HDFS中的EC_第1张图片

**数据持久性为2,**因为我们可以处理2个同时发生的故障。

存储效率为33%(有效块/总块数,即33%)。

除此之外,在存储中制作两个额外的数据副本会导致200%的开销。

今天的HDFS擦除编码

它有两种算法: -

1)XOR算法(简单EC 算法

它是HDFS Erasure编码的最简单实现。假设X和Y是数据单元,则奇偶校验单元是这两个数据单元的XOR。

HDFS中的EC_第2张图片

在这里,数据耐久性为1,好像可以处理1个同时发生的故障和存储效率为75%(因为我们只使用了1个额外的块,即3/4)。

x⊕y是XOR,通过该XOR仅生成一个奇偶校验位,并且如果任何位丢失,则可以通过剩余的数据单元和奇偶校验位来恢复。它非常有限,因为它产生1个奇偶校验位,因此XOR操作只能容忍n组大小的1个故障,但我们通过使用XOR算法可以获得更好的存储效率。

2)Reed-Solomon 算法(改进的EC Algo):

通过改进的EC算法或通常称为Reed-Solomon算法来解决XOR运算的限制。Reed-Solomon使用线性代数运算来生成多个奇偶校验单元,而不是一次只获得一个容错,我们可以容忍每组多个故障。它通过将生成矩阵(G T) 与’d 数据单元相乘来生成具有d个数据单元和p个奇偶校验单元的码字。在Reed中,Solomon容错高达’p’即(奇偶校验单元的数量)单元,存储效率为d / d + p,其中’d’是数据单元,'p’是奇偶单元。
HDFS中的EC_第3张图片

在这个特定的例子中,当您查看代码字时,实际数据单元是6(蓝色单元格)和3(红色单元格)是奇偶校验单元,它们通过将我们的数据单元乘以生成矩阵简单地获得。

只要’k + m’个单元中的’k’可用,就可以通过生成矩阵与扩展码字的乘法逆来恢复存储故障。

因此,这里**Data Durability是3,**因为它可以处理2个同时发生的故障,存储效率是67%(因为我们只使用1个额外的块,即6/9)并且我们只需要存储与原始数量相比的半数个单元。我们可以得出结论,我们也只有50%的开销。

Hadoop中HDFS擦除编码的优点

  • **保存存储 -**最初,当块不再被任何其他数据更改时,块会重复三次,之后,后台任务会将其编码为代码字并删除其副本。
  • **双向恢复 -**不仅在读取路径时发现并恢复HDFS块错误,而且我们可以在后台主动检查它。
  • **低开销 -**在RS编码算法中,开销从200%减少到仅50%。

结论

将EC(Reed-Solomon Algo)与HDFS集成可以提高存储效率,同时仍然提供与传统的基于复制的HDFS部署类似的数据持久性。例如,具有6个块的3x复制文件将消耗6 * 3 = 18个磁盘空间块。但是使用EC(6数据,3奇偶校验)部署,它将只消耗9块磁盘空间。

你可能感兴趣的:(大数据学习总结)