赞
踩
本文作者:李波,就职于英特尔亚太研发有限公司,从事大数据方面的研究与开发工作。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》
在HDFS中,可靠性通过多副本的方式来实现,从而较低的存储利用率成为时下基于HDFS应用的主要问题之一。本文将详细介绍HDFS一个新的特性——Erasure Coding(EC), 它在保证同等(或者更高)可靠性的情况下将存储利用率提高了近一倍。
近些年,随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用。然而,随着需要存储的数据被越来越快的产生,越来越高的HDFS存储利用率要求被提出。而对于一个分布式文件系统来说,可靠性必不可少。因此,在HDFS中每一份数据都有两个副本,这也使得存储利用率仅为1/3,每TB数据都需要占用3TB的存储空间。因此,在保证可靠性的前提下如何提高存储利用率已成为当前HDFS应用的主要问题之一。
纠删码技术起源于通信传输领域,后被逐渐运用到存储系统中。它对数据进行分块,然后计算出一些冗余的校验块。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块。Facebook 的开源项目HDFS-RAID在HDFS之上使用了纠删码技术。HDFS-RAID对属于同一文件的块分组并依次生成校验块,将这些校验块构成独立的文件,并与原始的数据文件一一对应。RaidNode作为一个新的角色被引入进来,它负责从DataNode中读取文件的数据块,计算出校验块, 并写入校验文件中;同时,它还周期性地检查被编码了的文件是否存在块丢失,如有丢失则重新进行计算以恢复丢失的块。HDFS-RAID的优点是其构建于HDFS之上,不需要修改HDFS本已经复杂的内部逻辑,但缺点也显而易见:校验文件对用户是可见的,存在被误删除的可能;依赖于MySQL和MapReduce来存储元数据和生成校验文件;RaidNode需要周期性地查找丢失的块,加重了NameNode的负担;使用的编解码器性能较差,在实际应用中往往不能满足要求。另外,由于缺乏维护,HDFS已将HDFS-RAID的代码从contrib包中移除,这给使用HDFS-RAID带来不少困难。
2014下半年,英特尔和Cloudera共同提出了将纠删码融入到HDFS内部的想法和设计(HDFS EC),随后吸引了包括Hortonworks、华为、Yahoo!等众多公司的参与,使之成为Hadoop开源社区较为活跃的一个项目。将纠删码融入到HDFS内部带来了诸多好处:它不再需要任何的外部依赖,用户使用起来更为方便;其代码成为HDFS的一部分,便于维护;可以充分利用HDFS的内部机制使性能得到最大程度的优化。纠删码的编解码性能对其在HDFS中的应用起着至关重要的作用,如果不利用硬件方面的优化就很难得到理想的性能。英特尔的智能存储加速库(ISA-L)提供了对纠删码编解码的优化,极大的提升了其性能,这一点将在实验部分做详细的阐述。HDFS EC项目主要要实现以下的功能:
纠删码(Erasure Code)与 Reed S
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。