论文部分内容阅读
随着科学技术的快速发展,海量数据现在已经进入全球经济,互联网,科学计算等诸多领域。与此同时,人们对海量数据离线分析处理的需求也越来越强烈。对于海量数据的离线分析,可以广泛应用在商业智能,统计报表,广告推荐,以及数据挖掘等各个方面,并通过多种方式为企业与用户创造价值。
在海量数据的离线分析技术方面,传统数据库技术面临数据规模,查询速度以及成本等方面的严峻挑战。然而随着科技的发展,新的处理技术也不断涌现,如Google的GFS,开源社区的Hadoop等,同时为了方便上层应用的开发,又陆续出现了Hive、Pig等新技术。目前国内的大型互联网公司都在基于这些新技术研发相关的海量数据分析系统,例如腾迅数据仓库(Tencent Data Warehouse)。
本文主要针对于目前海量数据离线分析现状进行了深入的分析,并致力于解决目前基于Hadoop的海量数据离线分析方面的若干重大问题。具体而言,在海量数据离线分析方面,我们取得了如下的研究成果:
1.提出了一种面向数据分析的CoLocation的数据分布策略
在海量数据离线分析系统中,存储层中数据的分布策略是一个关键问题,数据分布策略的优劣将直接影响查询处理的性能。目前的Hadoop平台数据分布策略完全不考虑上层应用的特性,相关的数据将按机架分布的方式随机散布在整个集群之中。因此在分析处理过程中,容易造成较大的网络I/O。在本文中,我们提出了CoLocation的数据分布策略,在分布式系统中将逻辑上的相关数据聚集在相同节点之内,以利用数据的局部性、减少计算和查询时的网络I/O。CoLocation数据分布策略可以提升如连接查询,分组查询以及列存储等常用应用的性能。
2.基于CoLocation的数据分布策略,设计了一套新的并行连接查询处理算法
通过对腾讯公司较长时期内的数据处理方面的抽样统计分析发现:连接查询是海量数据离线分析方面使用频度最高的查询语句。传统基于Hadoop MapReduce的连接查询必须将连接查询划分为Map和Reduce两个阶段任务,执行时间较长,效力较低。本文根据连接查询的常用性,在基于CoLocation的数据分布策略下,提出了一种新的连接查询处理CHMJ(CoLocation HashMapJoin)算法。实验结果验证了该算法提升连接查询处理的查询效率高达5倍。
3.提出了一种面向业务特征的作业调度算法
MapReduce作业调度策略是一个重要问题,将影响到海量数据分析系统的执行效率。针对于目前多用户多任务下MapReduce作业调度算法的不足,本文提出了一种面向业务特征的调度算法。BCBS以有效支持各类应用。BCBS算法通过资源分组,剥夺式策略来满足不同应用的需求,通过资源动态调配以避免固定式划分造成的资源浪费,通过等待调度将作业的子任务尽可能调度到数据存放节点,从而降低网络负载,提升作业的整体执行效果。
4.提出了一种面向海量离线分析系统的高可用性方案及其实现
Hadoop采用的是Master-Slave的设计结构,本身并没有提供Master单点故障的解决方案,而且如果Master出现故障将会导致整个集群的瘫痪,所以针对Master单点故障的恢复是十分有必要的。在本文中,我们提供一套Master单点故障的解决方案,提供Master出现故障自动热切到备机的功能,避免运维人员的手工干预,从而减少停工时间,保持其服务的高度可用性。
目前,本文中所提出的相关技术已经在腾讯分布式数据仓库(TDW)中得以应用。并且在腾讯日常分析处理工作中,扮演着重要的角色。