巧用Erasure Code 探秘浪潮大数据一体机的存储高招

大数据由于与智慧城市、物联网、移动互联等前景广阔的项目息息相关,成为时下最炙手可热的IT技术。在此背景下,众多的IT厂商纷纷推出基于Hadoop的大数据一体机,力图表明已经做好准备迎接大数据时代。不过,大部分IT厂商谈及的几乎都是产品特点和市场表现,一旦涉及具体的技术细节都深藏不露,例如近年来,Erasure Code作为可有效提升存储效率、安全性和便捷性的新兴存储技术,备受IT和互联网业界青睐,但却对此技术秘而不宣。近日,笔者有机会近距离接触到浪潮云海大数据一体机SDA60000,对Erasure Code在这款产品中的应用细节探了一回究竟。

众所周知,Hadoop之所以问世,很大一部分原因是为了解决数据的分布式存储问题。由此可见,存储在整个Hodoop体系下的地位有多么重要。SDA60000作为一款面向大数据分析、处理的软硬一体化产品,在存储方面做了针对性的设计:硬件上使用了大容量的SATA硬盘,单机柜可提供700TB以上的裸容量;软件方面,部署了浪潮在开源Hadoop基础上做了深度优化后的浪潮云谷一体机系统软件,通过HDFS文件系统实现对海量数据的快速存储。这其中,Erasure code的巧妙使用,使得HDFS的存储机制得到了进一步改良。

Erasure Code:互联网巨头们的“最爱”

Erasure Code 最早是无线通信中有噪信道编码的一种,也叫纠删码。Erasure Code设计的初衷,是希望利用这项技术将数据分割成不可识别的数据块,使用额外的信息追加到每个数据块中,允许从一些数据块的子集就可以复原完整的数据集,数据块可以分布在一个数据中心、城市、地区或全球任何地方的不同存储位置。这种方式将大大提升数据存储的便利性和安全性。

从某种程度而言,Erasure Code 是对RAID 5 算法的改良和优化。最常见的Erasure Code是Reed Solomon算法。如图1所示,假设总共有n块数据,其中k块用来存放数据,m块用来存储erasure编码(k+m=n),只要坏掉的数据块数量不超过m块,都可以通过erasure编码将其余的恢复出来。也就是说,通常k+m的erasure编码,能容m块数据故障的场景,这时候的存储成本是1+m/k,通常m

图 1 Reed Solomon Erasure Code 算法

当前,Microsoft、Google、Facebook、Amazon、淘宝等互联网巨头早已开始研究Erasure code编码存储技术,并将其实际应用到各自主流存储系统中。

Google GFS II中采用了最基本的RS(6,3)编码,将一个待编码数据单元(Data Unit)分为6个数据块(data block),再添加3个校验块(parity block),最多可容包括校验块在内的任意3个数据块错误。

微软在其云存储平台Windows Azure Storage中将校验块分为全局校验块、局部校验块。当发生任何一个数据块错误时,恢复代价由传统RS(12,4)编码的12(通过网络传输的数据块数量),变为6,恢复过程的网络I/O开销减半。

Facebook HDFS RAID的早期编码方式是RS(10,4),为减少数据恢复的网络I/O,Facebook于VLDB 2013发表名为“XORing Elephants”的LRC编码方法,除了在原先的10个数据块之后添加4个校验块外,还将10个数据块均分为2组,每组单独计算出一个局部校验块,将数据恢复代价由原来的10降低为5。

采众家之长 浪潮SDA60000中的Erasure Code

当然,天下没有免费的午餐,HDFS Erasure Code在提升存储空间利用率的同时,由于数据校验块的计算需要额外的CPU时间,加上完整的数据块只有一份,在高并发读取时效果不理想。故此,应用Erasure Code需根据数据量和性能需求制定有针对性的策略:对于数据量大,存储空间紧张,访问频度低的数据采用Erasure Code方式。

浪潮云海大数据一体机SDA60000借鉴了各大厂商的研发和优化经验,采用Erasure code对HDFS的存储机制进行改良,它采用的RS因子为RS(10,4),即为每10个数据块生成4个校验块,每个集群可容忍最多4个节点失效,数据冗余度为1.4。通过Erasure code技术,SDA60000在保证了数据容错的基础上大幅提升了存储空间利用率。

图 2 SDA60000 Erasure Code 策略

如图2所示,浪潮云海大数据一体机SDA60000可为HDFS的每一个目录制定灵活的Erasure Code策略,通过制定RAID间隔,SDA 60000可以实时侦测特定目录中数据的冷热程度,当系统发现某些数据在很长一段时间没有被访问时,自动将底层的存储机制从默认的三副本转化为Erasure Code,以提升文件系统的空间利用率。

在实际应用中HDFS Erasure Code功能非常适合海量历史数据的存储,是图片视频数据,音频数据和日志数据理想的动态归档方案,在政府、公安、医疗和科研等行业具有广泛的应用前景。

相对于传统的业务系统,大数据分析系统对于数据可用性和数据处理性能要求更为苛刻,浪潮云海大数据一体机将进一步发挥其软硬件一体的优势,一方面,优化软件算法并针对硬件情况调优参数,另一方面,借助于浪潮强大的硬件研发能力,通过FPGA(Field-Programmable Gate Array)加速卡,SSD缓存加速等技术加速编码速度,提升磁盘IO性能。

浪潮是领先的云数据产品及方案供应商,目前已全面涉足软件定义数据中心,强调以硬件重构和软件定义相结合的融合架构,来实现数据中心所有资源的全虚拟化、全自动化,更好的满足大数据、云计算应用对IT基础架构的要求。浪潮云海大数据一体机SDA60000作为一款融合架构产品,将是未来软件定义数据中心支撑平台的重要选择之一。