宏观上,Hadoop每个作业要经历两个阶段:Map phase和reduce phase。对于Map phase,又主要包含四个子阶段:从磁盘上读数据-》执行map函数-》combine结果 -》将结果写到本地磁盘上;对于reduce phase,同样包含四个子阶段:从各个map task上读相应的数据(shuffle)-》sort-》执行reduce函数-》将结果写到HDFS中。
Hadoop处理流程中的两个子阶段严重降低了其性能。第一个是map阶段产生的中间结果要写到磁盘上,这样做的主要目的是提高系统的可靠性,但代价是降低了系统的性能,实际上,Hadoop的改进版–MapReduce Online去除了这个阶段,而采用其他更高效的方式提高系统可靠性(见参考资料[1]);另一个是shuffle阶段采用HTTP协议从各个map task上远程拷贝结果,这种设计思路(远程拷贝,协议采用http)同样降低了系统性能。实际上,Baidu公司正试图将该部分代码替换成C++代码来提高性能(见参考资料[2])。
本文首先着重分析shuffle阶段的具体流程,然后分析了其低效的原因,最后给出了可能的改进方法。
如图所示,每个reduce task都会有一个后台进程GetMapCompletionEvents,它获取heartbeat中(从JobTracker)传过来的已经完成的task列表,并将与该reduce task对应的数据位置信息保存到mapLocations中,mapLocations中的数据位置信息经过滤和去重(相同的位置信息因为某种原因,可能发过来多次)等处理后保存到集合scheduledCopies中,然后由几个拷贝线程(默认为5个)通过HTTP并行的拷贝数据,同时线程InMemFSMergeThread和LocalFSMerger会对拷贝过来的数据进行归并排序。
主要有两个方面影响shuffle阶段的性能:(1)数据完全是远程拷贝 (2)采用HTTP协议进行数据传输。对于第一个方面,如果采用某种策略(修改框架),让你reduce task也能有locality就好了;对于第二个方面,用新的更快的数据传输协议替换HTTP,也许能更快些, 如UDT协议(见参考资料[3]), 它在MapReduce的另一个C++开源实现Sector/Sphere(见参考资料[4])中被使用,效果不错!
————————————————————————————————————————-
【参考资料】
【1】http://code.google.com/p/hop/
【2】http://wenku.baidu.com/view/8225e73f0912a21614792947.html
【3】http://udt.sourceforge.net/
【4】http://sector.sourceforge.net/
分享到:
相关推荐
Hadoop Mapreduce过程shuffle过程全解析,Shuffle过程
基于Hadoop网站流量日志数据分析系统 1、典型的离线流数据分析系统 2、技术分析 - Hadoop - nginx - flume - hive - mysql - springboot + mybatisplus+vcharts nginx + lua 日志文件埋点的 基于Hadoop网站流量...
是大数据课程大作业,基于Hadoop的电影影评数据分析,需要安装Hadoop,了解MapReduce 和HDFS。
Hadoop豆瓣电影数据分析(Hadoop)操作源码
基于Hadoop大数据平台对某网站的外卖订单数据进行分析,分析结果进行可视化展示
基于Hadoop部署实践对网站日志分析 1. 项目概述 本次要实践的数据日志来源于国内某技术学习论坛,该...NameNode它是Hadoop 中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问。 Secondary NameNode.....
针对本次实验,我们需要用到Hadoop集群作为模拟大数据的分析软件,集群环境必须要包括,hdfs,hbase,hive,flume,sqoop等插件,最后结合分析出来的数据进行可视化展示,需要用到Python(爬取数据集,可视化展示)...
基于Hadoop数据分析系统设计(需求分析).docx 随着云时代的来临,大数据也吸引越来越多的关注,企业在日常运营中生成、积累的用户网络行为数据。这些数据是如此庞大,计量单位通常达到了PB、EB甚至是ZB。Hadoop作为一...
hadoop 搜索引擎 用户行为分析 基于hadoop的搜索引擎用户行为分析,采用分布式文 件系统和并行计算模型支撑海量日志文件的处理
简单说一下hadoop和spark的shuffle过程
基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及性能分析.pdf基于Hadoop的研究及...
针对本次实验,我们需要用到Hadoop集群作为模拟大数据的分析软件,集群环境必须要包括,hdfs,hbase,hive,flume,sqoop等插件,最后结合分析出来的数据进行可视化展示,需要用到Python(爬取数据集,可视化展示)...
hadoop
1.大数据背景介绍 2. HADOOP体系架构 3. 基于HADOOP的大数据产品分析 4. 基于HADOOP的大数据行业应用分析 5.东软基于HADOOP的大数据应用建议
针对数据分析介绍分布式计算涉及的大量概念、工具和技术,纵览Hadoop生态系统。
在VMWare中安装好Linux操作系统,并自动配置好VMWare tools后。 需要设置共享文件夹以便与windows系统互相传输文件,Hadoop安装配置流程图解
这是一个Eclipse中复制出来的MapReduce工程文件,如果你下载了源代码,需要部署在Linux环境下的Eclipse中,并且,这个Eclipse必须已经安装了hadoop开发插件,能够做Hadoop开发。不然,会提示找不到hadoop开发包。
,Hadoop 技术已经在互联网领域得到了广泛的应用。...同样也得到了许多公司的青睐,如百度主要将Hadoop 应用于日志分析和网页数据库的数据 挖掘;阿里巴巴则将Hadoop 用于商业数据的排序和搜索引擎的优化等。
2022毕业设计,基于 Hadoop 的游戏数据分析系统源码.zip