- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Hadoop排序算法并行化改进
基于Hadoop排序算法并行化改进
摘要:受单机内存和计算能力的限制,串行的排序算法难以对大数据进行高效排序。针对此问题,根据Hadoop的MapReduce框架对常用的内部排序算法进行并行化改进,给出改进算法的基本步骤,描述了Map、Partition和Reduce函数的主要代码。以折半插入排序和堆排序为例,通过实验比较串行算法和改进算法的执行时间,测试改进算法的可扩展性。实验结果表明,改进的并行排序算法具有较高的执行效率和较好的可扩展性。
关键词关键词:Hadoop平台;MapReduce模型;排序算法;大数据
中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2016)004-0068-03
0引言
排序是算法设计的一种基本操作,受到学者广泛关注。内部排序是对存放在内存中的记录进行排序,大致可以分为3类:简单的排序算法、先进的排序算法和基数排序算法[1]。这3类排序算法的时间复杂度分别为O(n2)、O(nlogn)和O(d(n+rd)),其中n是记录数,d是关键字个数,rd是基数。可见,内部排序算法是时间复杂度较高的算法,依靠单机计算能力难以对大数据进行高效排序。针对此问题,已有较多文献提出利用多线程对数据进行并行排序,使排序算法的执行效率得到了很大提高。例如,文献[2]提出了一种按二进制位拆分数据,使用Java的多线程对拆分数据进行快速排序的并行算法;文献[3]设计了一种多线程归并排序算法,采用OpenMp编译制导语句在多核处理器下使用多线程对数据进行排序。但是,受单机内存容量的限制,大数据无法存放于单机内存中,基于多线程的排序算法仍然无法完成对大数据排序任务。在云计算环境下,利用云计算技术是解决大数据排序问题的有效途径之一。
Hadoop是一个开源的云计算平台,用户可以充分利用集群的计算和存储能力在Hadoop平台上完成海量数据处理[4]。本文根据Hadoop的MapReduce框架对串行的排序算法进行并行化改进,给出了改进算法的基本步骤和Map、Partition、Reduce函数的描述,并通过两组实验测试改进算法性能。
1Hadoop的HDFS和MapReduce简介
HDFS是Hadoop的分布式文件系统,用于将数据文件以块为单位存储在集群多个节点上。数据文件的元数据存储在NameNode节点上,具体的文件内容存储在DataNode节点上,为保证HDFS具有高可靠性,各个数据块被复制成多个副本存储在不同节点上[5]。HDFS提供了分布式缓存机制,用户设置的分布式缓存文件可以复制到所有节点上,从而实现文件共享。
MapReduce是Google提出的并行编程模型,Hadoop平台实现了该模型。在Hadoop的MapReduce框架中,JobTracker节点负责作业调度和计算任务分配,TaskTracker节点负责执行计算任务[6]。一个MapReduce任务在Hadoop平台上的执行过程主要包括:输入、Map、Shuffle、Reduce和输出,如图1所示。
图1MapReduce任务的执行流程
输入阶段,MapReduce框架根据用户设置的数据输入格式将记录解析成键/值对,并将键/值对输入Map函数。Map阶段,通过执行Map函数输出中间键/值对。Shuffle阶段,首先通过执行Partition函数将中间键/值对按键分区和排序,然后将属于同一个分区的键/值对归并为列表。Reduce阶段,归并后的列表输入Reduce函数,对数据进行处理后向HDFS输出最终结果[7]。
2基于Hadoop的排序算法并行化改进
2.1改进算法基本思想
使用Hadoop的随机采样器对大数据采样,根据Reduce任务的数量NR确定每个分区的取值范围,使第p个分区的最大数小于第p+1个分区的最小数,其中,0≤pNR-1。每个Reduce任务使用相同的内部排序算法对分区记录排序,按分区号从小到大的顺序依次收集Reduce任务输出的文件,得到排序结果。
2.2改进算法的基本步骤与描述
为了便于算法描述,Reduce任务的数量用NR表示,对于第j个数据分片,该分片中各个分区的记录数保存在ds目录的fj文件中,为避免文件重名,fj可以由处理第j个分片的TaskAttemptID代替。假定关键字的数据类型为整型,按关键字对记录排序,记录结构描述如下:
classRcdType{
intrk;//关键字
Stringotheritems;//其它数据项
}
算法基本步骤描述如下:
(1)设置Reduce任务数量NR,使用Hadoop随机采样器对大数据采样,将采样后得到的文件_partition.
原创力文档


文档评论(0)