阅读本文可以带着下面问题 1.reduce数量由谁来决定? 2.运行作业的工具由哪些? 更多问题等待你挖掘
MapReduce的设计目标是方便编程人员在不熟悉分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。MapReduce编程现在基本已经成为分布式并行编程框架的Bible,很多分布式计算引擎的实现[Hadoop][CIEL][Twister][Transformer][MR-mpi][Phoenix][Dryad]都将MapReduce编程作为一个核心的编程模型。
MapReduce编程模型组件:Mapper,Reducer
Mapping:MapReduce将Input List作为Mapping函数的输入参数,经过处理,把结果返回给Output List。举例来说,有一个函数toUpper(str),用来返回输入字符串的大写版本。那么这里的Input List指的是转换前的常规字符串列表,Mapping Function指的是toUpper函数,而Output List指的是转换后的大写字符串列表。值得注意的是,在这里Mapping并没有改变输入字符串列表,而是返回一个新的字符串列表。
Reducing:MapReduce将Output List作为Reducing函数的输入参数,经过迭代处理,把这些数据汇集,返回一个输出值给Output Value。从这个意义上来说,Reducing一般用来生成”总结“数据,把大规模的数据转变成更小的总结数据。例如,"+"可以用来作一个reducing函数,去返回输入数据列表的值的总和。
从工作流程来讲,MapReduce对应的作业Job首先把输入的数据集切分为若干独立的数据块,并由Map组件以Task的方式并行处理。处理结果经过排序后,依次输入给Reduce组件,并且以Task的形式并行处理。MapReduce对应的输入输出数据由HDFS的DataNode存储。MapReduce对应的Job部署在Master服务器,由Master JobTracker负责Task的调度,监控,重新执行失败的任务等等。MapReduce对应的Job部署在若干不同的Slave服务器,每个集群节点含一个slave TaskTracker,负责执行由master指派的任务。
Hadoop框架由Java实现的,它提供了两种主要工具。
Hadoop Streaming是一种运行作业的实用工具,它允许用户创建和运行任何可执行程序(例如:Shell工具)来做为mapper和reducer。Hadoop Pipes是一个与SWIG兼容的C++ API (没有基于JNITM技术),它也可用于实现Map/Reduce应用程序。这样,开发人员就可以利用MapReduce编程框架,开发分布式应用程序,运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
MapReduce过程关键点 1)Map阶段的数据本地性的考虑。 2)Map中间结果的归并,由多个Spill文件归并成一个大文件。 3)Reduce拷贝数据的过程
MapReduce核心:Shuffle过程 要想理解MapReduce编程, Shuffle是必须要了解的。 Shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java API里的Collections.shuffle(List)方法,它会随机地打乱参数list里的元素顺序。
在Hadoop这样的集群环境中,大部分map task与reduce task的执行是在不同的节点上。当然很多情况下Reduce执行时需要跨节点去拉取其它节点上的map task结果。如果集群正在运行的job有很多,那么task的正常执行对集群内部的网络资源消耗会很严重。这种网络消耗是正常的,我们不能限制,能做的就是最大化地减少不必要的消耗。还有在节点内,相比于内存,磁盘IO对job完成时间的影响也是可观的。从最基本的要求来说,我们对Shuffle过程的期望可以有:
完整地从map task端拉取数据到reduce 端。 在跨节点拉取数据时,尽可能地减少对带宽的不必要消耗。 减少磁盘IO对task执行的影响。
原帖地址:http://www.aboutyun.com/thread-7039-1-1.html
|
相关推荐
MapReduce goole MapReduce编程模型
Mapreduce编程模型是Google采用的云计算编程模式,本论文阐述了Mapreduce编程模型
基于MapReduce编程模型的分布式并行计算系统的设计和实现,何皓星,李昕,大数据处理技术对互联网应用本身和企业都具有非常重大的意义。随着互联网业务数量的快速增长,系统中积累的数据也越来越多。如何
大数据及MapReduce编程模型94.pptx
Hadoop技术-MapReduce编程模型.pptx
Hadoop技术MapReduce编程模型共8页.pdf.zip
使用Hadoop MapReduce实现两个矩阵相乘算法
MapReduce编程模型下的上下文离群数据挖掘算法.pdf
03.mapreduce编程模型和具体实现框架之间的概念关系.mp4
01.mapreduce编程模型--及hadoop中的具体实现框架--复习.mp4
4 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后查看 MapReduce Web 界面。 5. 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后练习 MapReduce Shell 常用命令。 。。
07丨为什么说MapReduce既是编程模型又是计算框架?.html
基于CPU-GPU融合架构下的MapReduce编程模型,陈旭,谭怀亮,在数据量不断增加的今天,大数据的分析和挖掘给传统计算的架构和方法带来了挑战。随着多核和并行计算技术的不断发展,人们开始关��
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
mapreduce编程模型软件的具体实现: hadoop中的mapreduce框架、spark。 hadoop中的mapreduce框架: 对编程模型阶段1实现就是:map task 对编程模型阶段2的实现就是reduce task。 map task: 读数据:...
MapReduce编程实例浅析,讲述如何进行M/R程序开发。