中文

面向 MapReduce 的列式存储技术

数据库 2011-05-24 v1 分布式、并行与集群计算

摘要

MapReduce 用户在扩展其工作负载时常常会遇到性能问题。他们所遇到的许多问题,可以通过应用三十多年来并行数据库管理系统研究中积累的技术来克服。然而,将这些技术转化到诸如 Hadoop 这样的 MapReduce 实现中,会带来独特的挑战,并可能导致新的设计选择。本文描述了如何将列式存储技术融入 Hadoop,同时保留其流行的编程 API。我们表明,在 Hadoop 中简单地使用二进制存储格式,就能比直接使用文本文件带来 3 倍的性能提升。随后,我们引入了一种与 Hadoop 的复制和调度约束兼容的列式存储格式,并证明它能够将真实工作负载上的 MapReduce 作业速度提升一个数量级。我们还表明,处理 MapReduce 作业中常见的复杂列类型(如数组、映射和嵌套记录)会带来显著的 CPU 开销。最后,我们引入了一种新颖的跳表列格式和惰性记录构建策略,该策略避免反序列化不需要的记录,从而额外提供 1.5 倍的性能提升。基于真实内网爬虫数据的实验表明,我们的列式存储技术可以将 Hadoop 中 Map 阶段的性能提升高达两个数量级。

关键词

引用

@article{arxiv.1105.4252,
  title  = {Column-Oriented Storage Techniques for MapReduce},
  author = {Avrilia Floratou and Jignesh Patel and Eugene Shekita and Sandeep Tata},
  journal= {arXiv preprint arXiv:1105.4252},
  year   = {2011}
}

备注

VLDB2011