论文部分内容阅读
云计算作为信息时代一种新兴的服务模式,已成为二十一世纪互联网最有影响力的技术之一。近几年在互联网技术排行榜中都高居前列,国内外很多著名IT公司都把云计算作为自己的首要战略发展技术。云计算已经渐渐开始改变了人们的工作方式和传统软件工作的流程。云计算更是以IAAS(基础架构即服务),PAAS(平台即服务),SAAS(软件即服务)的模式为大众提供廉价、方便、高效的服务。随着互联网的高速发展,存储数据量和传输数据量相比之前都呈几何倍数增长。从2006年到2010年,全球信息总量增长6倍以上,2010年人类生产出1.2ZB的信息增长率为50%,而到了2020年,这个数字将会变为35ZB。传统的存储方式设计复杂,价格昂贵,扩展性差,需要专业人士维护无法跟上数据增长的需求。对于PB乃至更大的数据集,以往单点式存储、磁盘阵列等存储方式已经无法适应数据爆炸式增长,以前分散的各自为政的构建方式,很容易形成信息孤岛。海量数据的处理和分析已成为一个重要问题。MapReduce作为当今一种处理分布式海量数据的工具,由于其“易扩展”、“容错性高”、“价格低廉”等优点已被广泛应用到很多领域。但是由于设计时采用的key值统一分配到Reduce端的算法,当处理数据存在倾斜会导致处理数据分布不平衡从而产生“短腿”作业,最终影响整体的运行效果。当今解决这个问题主要都是采用异步Map和Reduce方法提前收集key值的分布情况,然后制定分配方案,但是这样会浪费很多时间。论文将研究在数据倾斜时,如何高效的分配中间key值保证Reduce端数据的平衡。利用专门的抽样程序统计key值的整体频率分布情况,提前制定分配策略。然后论文将分配策略应用到Map到Reduce的分配过程中。这种设计不仅能提供一种平衡的数据分配模式,而且能提高MapReduce同步性能。对抽样方式提供了两种方案:分段组合优化和分段分割优化。实验的结果显示,第一种方法适合数据比较少的情况,当数据倾斜严重时第二种方法使数据更平衡更节省整体运行时间。