充值信息

赞助信息

推荐给好友 上一篇 | 下一篇

Facebook如何压缩300PB的数据仓库?



当你有一个300 PB的数据仓库运行在Hadoop之上,你尽你的力量去阻止在这一系统上增加新的储存能力。虽然社交网络巨头Facebook不是不敢增加硬件来解决可扩展性问题,其软件工程师总是在寻找方法使基础设施软件支撑Facebook更有效率,因而需要更少的硬件来获得更多的容量和性能。

情况就是这样,Facebook一个为其数据仓库的新的数据压缩算法已经成熟,叫ORCFile。它运行在数据仓库的蜂巢(Hive)关系层,使用Hadoop分布式文件系统来存储网站的各种日志信息。ORCFile是Facebook为早先版本的程序,称为RCFile,进行的调整。它允许对HDFS文件格式的原数据压缩紧凑8 x倍。使用RCFile相比大约5倍压缩。

Facebook的分析引擎是巨大的。公司有多于100000台服务器运行在它的四个数据中心。Facebook 的分析主管在去年秋天指出,公司的分析引擎和广告业务运行在数以万计的服务器节点,占公司整个服务器基础设施的很大一部分。Facebook自己修改版本的Hadoop,它分布于跨地理的集群。这个Hadoop集群有300 PB的聚合数据,公司每天还增加大约600 TB的数据。简言之,这每三天左右需要一个新的存储服务器框架(Rack)。这显然是不可持续的。

当然,公司运行MapReduce批处理作业在这个数据仓库上。还创建了蜂巢(Hive)关系层,因为它想要看起来和感觉上更像是一个SQL 驱动的关系数据库对存储在HDFS上的数据运行查询。蜂巢(Hive)与MapReduce相连。这超大规模数据仓库被Presto使用。Presto是一个SQL查询引擎,它绕过MapReduce并可以直接对HDFS运行查询。Facebook去年秋天让Presto开源,就像它对蜂巢(Hive)和早先对蜂巢(Hive)数据的RCFile压缩及新的ORCFile压缩方法所作的一样。这意味着Facebook的软件工程师想出的提高压缩的数据仓库数据的技术可被所有Hadoop用户使用,并可能用于其它列存储形式的数据库。

Facebook软件工程师在一篇博客文章中宣布了新的ORCFile压缩技术,还提供了深入的技术讨论针对蜂巢(Hive)表它是如何工作的,性能的情形。与其他柱状存储格式一样,Facebook的初始Record-Columnar文件(RCFile)格式把数据进行组排列,然后到栈HDFS街区内的柱状块。每一列的数据写入磁盘驱动器在Hadoop集群使用Zlib或Lzo等数据压缩算法。查询该数据的时候,先取元数据描述每个压缩块,然后打开并减压缩所需特定查询需要的那部分柱状数据存储,从而提高性能。平均在Facebook的数据集,RCFile提供5:1压缩比,这可以说是相当不错的。但是当你每三天要添加一个机架的储存驱动器,你必须做得更好。

Hadoop经销商HortonWorks在去年已经有蜂巢(Hive)的ORCFile替代的问题的工作。这是HortonWorks能够看到各种压缩和数据存储的方法使用TPC-DS蜂巢(Hive)数据仓库数据集的压缩比:

hortonworks-orcfile-compression

ORCFile是HortonWorks 的“鸡尾酒”项目的一部分,用在提高蜂巢(Hive)查询性能因素到100 倍。如您所见,在这个数据集,相比普通文本编码,HortonWorks 的ORCFile嵌入在蜂巢(Hive)12有约4.5倍压缩比。Facebook没有看到这样一个ORCFile的大幅度的跳跃,所以它作了一些改进。

ORCFile里,数据写入磁盘在256 MB的条纹,这类似于行组织RCFile编码,只是它还有其他层的编码和元数据,使数据跳越工作更好,来提高性能。然而,在Facebook的数据,ORCFile导致一些蜂巢(Hive)表膨胀而其他数据压缩较好,平均下来性能并没有提高。字符串数据占大约80%的Facebook数据仓库,所以软件工程师把ORCFile做一些调整,它是有益的时候,他们只使用一个名为字典编码条纹的方法,而不是仅仅是原始ORCFile那样。Facebook做了很多代码的深度改变,你可能不一定感兴趣,但是任何运行大规模蜂巢(Hive)的人员应该对结果感兴趣。这是对查询性能的影响与RCFile的三个不同版本:

facebook-orcfile-performance-1facebook-orcfile-performance-2

总结这一切,修改版的ORCFile格式压缩Facebook的数据8倍于原始文本格式,比之前的RCFile方法快大约63%。ORCFile写比从HortonWorks开源变体快三倍的速度,许多查询运行也快3倍。

展望未来,Facebook正在一些其他领域来改善修改版ORCFile工具。

软件工程师写的博客还指出,“这些想法支持其它的编解码器,包括LZ4HC等,使用不同的编解码器和压缩水平不同的列编码不同,存储额外的统计数据并提高它们给查询引擎,和结合开源工作的结果如谓词下推。我们也有一些其他的想法,进一步提高对我们的仓库存储效率。这包括消除逻辑冗余,在源和派生表,为冷数据集采样,增加所需的蜂巢一般以额外的类型系统当前存储为字符串类型。”

迄今为止,Facebook已经采用个修改版ORCFile压缩到几十pb的数据仓库表的能力,并收回数几十pb的存储。这是作为超大型主机事业数据中心操作者能提供的免费的钱。展望未来,根据什么方法是最好的,公司将看添加不同的编解码器到工具的可能性,并允许不同的编解码器用于压缩和解压缩数据仓库的不同部分。




 

评分:0

我来说两句