大数据开发:HDFS Erasure Coding机制

提到大规模数据存储,Hadoop的分布式存储,作为主流的技术方案,实力也是得到市场认可的。Hadoop的分布式文件系统HDFS,其冗余备份机制,确保了数据存储的容错,但是同时也增加了冗余存储成本。今天的大数据开发分享,我们就来讲讲HDFS Erasure Coding机制。

1、HDFS备份机制的问题

为了提供容错,HDFS根据复制因子的大小在不同的DataNodes节点复制文件块数据。复制因子默认值为3,则表明原始数据块有多余的两个副本,这些副本也消耗其他资源,例如网络带宽和存储。

在N个复制因子的复制中,存在N-1个容错能力,存储效率为1/N,这样的复制方式造成了资源浪费。对于I/O活动较低且很少访问的cold数据集和warm数据集的副本使用与原始数据集相同的资源。

Hadoop社区使用HDFS Erasure Coding代替默认的复制方式,以提供相同级别的容错能力,并且存储开销不超过50%。值得注意的是,Erasure Coding文件的复制因子始终为1,无法对其进行更改。

2、HDFS Erasure Coding是什么

在Hadoop 3中,Erasure Coding是默认复制方式的解决方案。Erasure Coding本身是一种编码容错技术,在存储生态系统中,RAID就使用了Erasure Coding,通过striping实现Erasure Coding,将逻辑顺序的数据划分为较小的单元(bit、byte或block),并将连续的单元存储在不同的磁盘上。

原始数据集的每个strip都会根据Erasure Coding算法来计算并存储一定数量的parity cells,该过程称为编码。基于剩余存活的数据和parity cells,从计算中恢复striping cell中的错误,该过程称为解码。

因此,在HDFS中使用Erasure Coding可提高存储效率,同时提供与传统的基于复制的HDFS部署相同水平的容错能力和数据持久性。

例如:一个具有6个blocks的文件,复制因子为3,将占用磁盘空间的18个blocks。

如果使用Erasure Coding,这个具有6个blocks的文件将仅占用磁盘空间的9个blocks(6 data,3 parity)。

3、HDFS Erasure Coding架构

在EC的背景下,striping具备很多关键的优势:

首先,它启用在线EC(立即以EC格式写入数据),避免了转换阶段,立即节省了存储空间。在线EC还增强了顺序I/O的性能,尤其可以在具有高端网络的集群中达到理想的性能。

其次,它自然地将一个小文件分发到多个DataNode,不必将多个文件捆绑到单个coding group中,简化了文件操作(删除、配额报告、联合名称空间之间的迁移)。为了支持Erasure Coding,HDFS体系架构进行了一些更改。

①NameNode Extension

HDFS中的文件被striping拆分,成为了一个个的块组(block groups)。每个block group包含一定数量的内部块。为了减少这些额外块对NameNode内存消耗,引入了Hierarchical block命名的新协议。可以根据任何内部块的ID推导出块组ID,允许在块组级别进行管理,而不是块级别。

②Client Extensions

客户端的读写路径得到了增强,可以并行处理块组中的多个内部块。

在DFSInputStream和DFSOutputStream中实现的HDFS客户端的主要I/O逻辑已通过支持数据striping和EC而扩展为DFSStripedInputStream和DFSStripedOutputStream。

在“输出/写入”路径上,DFSStripedOutputStream管理着一组数据streamers,每个DataNode节点一个,在当前块组中存储一个内部块。streamers通常异步工作。Coordinator角色负责整个块组的操作,包括结束当前块组、分配新的块组等。在“输入/读取”路径上,DFSStripedInputStream将请求的逻辑字节数据范围转换为存储在DataNodes节点上的内部块,然后它并行发出读取请求。如果发生故障时,它将发出其他读取请求以进行解码。

③DataNode Extensions

对于失败的EC块的后台恢复,DataNode节点运行一个额外ErasureCodingWorker(ECWorker)。

与复制类似,NameNode检测失败的EC块并选择一个DataNode来执行恢复任务。恢复工作作为心跳响应传递给NameNode。

ErasureCodingWorker执行以下三个任务来重构失败的EC块:使用专用线程池从源节点读取数据。根据EC策略,它将读请求调度到所有源目标节点,并且只读取用于恢复的输入块。解码数据并生成输出数据。将生成的数据块传输到目标节点。

④HDFS EC策略

HDFS集群中的文件和目录可以具有不同的EC和复制策略,以适应不同的工作负载。

HDFS EC策略结合了如何对文件进行编码和解码。每个策略都是使用以下两条信息定义的:

EC schema EC schema包括:_一个EC组中的数据块(data blocks)和奇偶校验块(parity blocks)的数量(例如,6+3)_编解码器算法(如Reed-Solomon、XOR)。

关于大数据开发,HDFS Erasure Coding机制,以上就为大家做了基本的介绍了。在Hadoop生态下,HDFS作为分布式文件系统的地位不可动摇,而ES机制,是在实际应用场景下不断优化所达成的新的优化思路。

你可能感兴趣的:(大数据开发:HDFS Erasure Coding机制)