[论文解读] Column-Oriented Storage Techniques for MapReduce
本文提出了一种与MapReduce兼容的Hadoop列式存储格式,同时保留其编程模型。通过利用二进制序列化、一种新型跳表列格式以及延迟记录构造技术,该方法在真实工作负载的map阶段实现了高达100倍的性能提升,其中避免对复杂嵌套类型进行不必要的反序列化带来了1.5倍的性能增益。
Users of MapReduce often run into performance problems when they scale up their workloads. Many of the problems they encounter can be overcome by applying techniques learned from over three decades of research on parallel DBMSs. However, translating these techniques to a MapReduce implementation such as Hadoop presents unique challenges that can lead to new design choices. This paper describes how column-oriented storage techniques can be incorporated in Hadoop in a way that preserves its popular programming APIs. We show that simply using binary storage formats in Hadoop can provide a 3x performance boost over the naive use of text files. We then introduce a column-oriented storage format that is compatible with the replication and scheduling constraints of Hadoop and show that it can speed up MapReduce jobs on real workloads by an order of magnitude. We also show that dealing with complex column types such as arrays, maps, and nested records, which are common in MapReduce jobs, can incur significant CPU overhead. Finally, we introduce a novel skip list column format and lazy record construction strategy that avoids deserializing unwanted records to provide an additional 1.5x performance boost. Experiments on a real intranet crawl are used to show that our column-oriented storage techniques can improve the performance of the map phase in Hadoop by as much as two orders of magnitude.
研究动机与目标
- 解决由低效存储和I/O引起的大型MapReduce工作负载中的性能瓶颈。
- 在不破坏其编程接口的前提下,将并行DBMS中的列式存储技术适配到Hadoop的执行模型中。
- 在分布式环境中高效支持数组、映射和嵌套记录等复杂列类型。
- 最小化因反序列化复杂数据结构中未使用的记录而产生的CPU开销。
- 设计一种与Hadoop的复制和调度约束兼容的存储格式。
提出的方法
- 采用二进制存储格式而非文本文件,以减少I/O和解析开销。
- 设计一种与Hadoop数据复制和任务调度机制相匹配的列式存储格式。
- 引入基于跳表的列格式,以加速谓词下推和仅索引扫描。
- 实现一种延迟记录构造策略,将反序列化推迟到字段实际被访问时才进行。
- 扩展格式以高效支持数组、映射和嵌套记录等复杂类型,同时保持运行时开销最小。
- 确保与现有MapReduce API和Hadoop执行模型的完全向后兼容。
实验结果
研究问题
- RQ1列式存储是否能在不修改编程模型的前提下提升MapReduce性能?
- RQ2在大规模工作负载中,二进制序列化与基于文本的格式相比,在I/O和CPU效率方面表现如何?
- RQ3结合列式存储、跳表和延迟反序列化可实现多大的性能提升?
- RQ4像数组和嵌套记录这样的复杂数据类型对列式格式中的CPU开销有何影响?
- RQ5谓词下推和选择性字段访问在多大程度上能减少map阶段的处理时间?
主要发现
- 仅使用二进制存储格式,与原始的基于文本的存储相比,性能可提升3倍。
- 所提出的列式存储格式可将真实世界MapReduce作业的执行速度提升高达一个数量级(10倍)。
- 基于跳表的列格式与延迟记录构造策略通过避免不必要的反序列化,额外带来了1.5倍的性能提升。
- 二进制格式、列式布局与延迟处理的结合,使真实内网爬取工作负载的map阶段执行时间最多减少两个数量级。
- 像数组和嵌套记录这样的复杂列类型会引入显著的CPU开销,但通过选择性反序列化可有效缓解。
- 该存储格式完全兼容Hadoop的复制和调度约束,可无缝集成到现有集群中。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。