● 摘要
随着互联网的发展,各种形式的海量数据成指数级增长。进入“大数据”时代,存储并分析处理这些海量数据成为亟待解决的问题。云计算是一种将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务的商业计算模型。云计算的超大规模、高可靠性、高可伸缩性、通用性等特点使得云计算在商业化得进程中得到了极大应用。云计算为大数据的处理提供了有效的解决方案。 MapReduce,作为云计算核心技术之一,是一种用于大规模数据的分布式处理的编程框架。MapReduce框架由于其简单、可扩展、容错等优点,开始被广泛用于大规模数据处理。Hadoop作为MapReduce框架的开源实现,得到了国内外很多公司和研究机构的使用与研究。但是,随着基于MapReduc框架的应用越来越多,针对具体应用,MapReduce模型暴露出来的不足和需要改进的方面越来越多。 通过研究MapReduce框架的执行流程,发现框架总是使用sort-merge算法对数据排序,且sort-merge占作业执行时间的比例为20%~30%。而对于某些作业,如聚集、查询、连接、投影等,排序是不必要的。这类作业只需要对数据进行分组而不需要对数据排序,排序反而会增加作业的执行时间。本文针对该问题对MapReduce框架做以下几方面的探讨:通过分析相关源代码深入分析MapReduce框架处理流程,对MapReduce处理流程进行更细粒度的阶段划分。结合具体应用,分析sort-merge过程及出现的影响执行效率的问题;针对具体不需要排序的应用,提出一种基于哈希的分组算法的改进方案,来提高MapReduce框架执行某些作业的性能。设计了针对中间结果数据进行分组的分组算法,并给出了改进后的执行流程和具体实现;经过大量的不同数据量的实验,表明改进后的框架在相关的应用上能够提高作业的执行效率。综上所述,本文设计了MapReduce框架下基于哈希的分组算法,并在Hadoop开源分布式系统中进行了实现。
相关内容
相关标签