论文部分内容阅读
数据仓库系统是现代企业不可或缺的决策支持系统之一,长久以来它一直由关系型数据库系统和并行数据库系统提供技术支持。然而最近几年,随着企业对管理海量数据的需求不断增长,传统的数据仓库系统在扩展性方面遇到了巨大的障碍。另一方面,大数据处理技术Hadoop凭借着其高度的可用性和伸缩性、低成本等优点,正在成为许多公司数据管理的基础。Hadoop最初由分布式文件系统HDFS和并行计算框架MapReduce组成,随后许多为Hadoop提供SQL接口的数据仓库引擎被开发出来,其中最为广泛使用的是Facebook公司的Hive。然而Hive使用MapReduce作为底层的执行引擎,因此也继承了MapReduce的性能问题,在处理TB级别的数据时查询性能远不如并行数据库系统。本文描述了一个基于Hadoop的高性能数据仓库引擎的设计与实现。该系统采用了一种混合架构,使用HDFS作为存储层,使用并行的SQL执行引擎作为计算层。使用HDFS存储用户数据使得系统本身不需要处理数据副本管理、容忍磁盘故障等问题。使用并行的SQL执行引擎取代MapReduce来执行查询使得系统能够达到和并行数据库系统相当的出色性能。另外,该系统能够完整地支持事务,这是许多现有的Hadoop数据仓库引擎尚未实现的。本文将讨论该系统的各个方面,包括架构设计、并行查询处理、事务支持、列式存储等。该系统基于PostgreSQL进行二次开发实现,本人主要参与了其执行器模块的开发,包括扩展迭代器模型、实现开放的列式存储格式Parquet等。本人还参与了系统的性能测试工作。最后,本文使用了TPC-H基准对该系统进行了全面的性能评估。测试结果显示,在处理简单选择查询时,该系统的性能是Hive的10倍以上;在处理复杂连接查询时,该系统的性能是Hive的40倍以上。