论文部分内容阅读
基于MapReduce编程模型并运行在大规模集群上的数据仓库系统是当今存储、管理和分析海量数据的重要工具。例如,基于开源MapReduce平台Hadoop的Apache Hive数据仓库系统已经被包括Facebook和淘宝在内的许多大数据拥有者所采用。然而由于海量数据处理的复杂性和MapReduce模型的特殊之处,基于MapReduce的海量数据仓库需要解决从数据存储到查询优化的一系列关键问题。本文的贡献是定义和解决如下三个问题。 第一个关键问题有关数据存储组织方式。本文认为一个高效的数据组织方式必须同时满足多个指标,例如磁盘数据空间最大化的利用和优化上层查询系统的性能。 第二个关键问题有关数据通信机制的优化技术。MapReduce中的的数据通信机制受限于其可伸缩性和容错性这两个重要设计目标。然而为了提高查询执行性能,关键数据通信机制必须在保证通用性的情况下使用最优化的算法。 第三个关键问题利用数据的物理组织优化数据通信。一个高效的数据查询引擎需要生成高效的查询计划。本文认为在MapReduce环境中,一个高效的查询计划必须充分利用数据的物理存储布局而优化MapReduce中的数据通信。 为解决第一个问题,本文提出了一种适用于MapReduce的行列混合存储方式,RCFile。这种存储方式可以使得数据仓库的数据存储量提高30%,并且可以优化查询的I/O与CPU。此技术被多个基于MapReduce的数据系统支持,同时其也被大量实际生成系统广泛使用。例如Facebook使用本文的RCFile作为其百PB级离线数据处理平台的默认数据存储方式。 为解决第二个问题,本文研究MapReduce执行模型中Map与Reduce的数据通信(shuffle)的瓶颈。本文实现并验证了一种优化的Map阶段数据通信的技术。本文以MapReduce的Hadoop实现为基准平台对新算法进行了验证对比。本文的优化算法能够加速Map阶段的输出排序10倍,可以使Map阶段的CPU使用降低50%。本文的新算法已经在Facebook的MapReduce平台成为了默认算法。 为解决第三个问题,本文研究了如何使查询利用数据的桶属性与有序属性去除Map与Reduce的数据通信。本文据此提出了多种连接与聚集操作的优化方式。实验数据表明在利用数据布局优化的查询可以加速3倍以上。本文的优化方式已被集成到开源数据处理系统Apache Hive中,并得到了广泛应用。