提到大规模数据存储,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机制,是在实际应用场景下不断优化所达成的新的优化思路。