论文部分内容阅读
近几年,Hadoop以其低成本、高容错、易编程的优势得到广泛应用,同时,Hive作为目前最成熟、应用最广泛的数据仓库工具,可以将SQL语句转换为MapReduce任务运行。因此,在互联网企业中经常利用Hadoop和Hive平台完成数据分析工作。对传统企业而言,随着数据量的急剧增加,基于关系型数据库的数据分析系统表现出查询性能低、扩展性差等不足,于是越来越多的传统企业也将数据分析任务从关系型数据库系统迁移到Hadoop和Hive平台。 由于业务的复杂性,关系型数据库中存在上千张表,并通过规范化建立约束关系,导致查询包含许多耗时的join操作,系统的分析处理能力严重不足。迁移到Hadoop和Hive的过程中,为了充分利用大数据平台的高计算能力,人们更倾向于通过预连接等去规范化技术构建宽表以提高查询效率,但引来宽表的更新和存储开销。由此,企业面临两难困境:一方面,遵循规范化损失大数据平台带来的优势,违反迁移的初衷;另一方面,去规范化的程度难以掌控,不当的去规范化策略可能增加数据操作成本。为了解决这一困境,本文设计并实现了原型系统TMapper,一个在平台迁移过程中自动寻找高效去规范化方案的工具。具体工作包括以下几个方面: (1)设计并实现了TMapper原型系统,并通过大量实验验证了TMapper的有效性。 在分析任务从关系型数据库迁移到Hadoop和Hive平台时,TMapper能够自动寻找较优的去规范化方案,优化查询。本文工作针对Hive系统展开,但方法同样适用于基于Hadoop的其他数据仓库系统。同时,基于TPC-H和真实的电网两种数据集展开实验。结果表明,TMapper选取的去规范化方案既能优于原始查询,又能优于将所有表简单预连接的粗糙方案,且性能提升明显。实验结果充分验证了TMapper的有效性和实用性。 (2)提出了去规范化的收益模型及MapReduce任务流的代价估计模型。 对某种去规范化方案而言,减少的是部分表的join时间,增加的是去规范化后宽表上的扫描时间及更新时间,两者的差值即某种去规范化方案的收益。同时,本文给出了基于MapReduce框架的代价估计方法,用来估计在某种去规范化方案下的查询开销,为决策提供数据支持。 (3)提出并实现了寻找最优去规范化方案的算法。 去规范化的过程主要分成两个阶段。在第一阶段,对每个查询单独处理,生成相应的优化方案——覆盖集,这个过程采用自下而上的启发式算法。在第二阶段,先对第一阶段产生的方案去重及合并,然后在一定的空间限制下,求解基于查询集合的最优去规范化方案,本阶段采用动态规划算法解决问题。