欢迎来到天天文库
浏览记录
ID:22771506
大小:251.01 KB
页数:12页
时间:2018-10-31
《mapreduce框架结构》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MapReduce框架结构2 MapReduce框架结构Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programmingmodel),是一个用于处理和生成大规模数据集(processingandgeneratinglargedatasets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定
2、义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这个模型来表达。 Hadoop的Map/Reduce框架也是基于这个原理实现的,下面简要介绍一下Map/Reduce框架主要组成及相互的关系。2.1 总体结构2.1.1 Mapper和Reducer运行于Hadoop的MapReduce应用程序最基本的组成部分包括一个Mapper和一个Reducer类,以及一个创建JobConf的执行程序,在一些应用中还可以包括一个Combiner类,它实际也是Reduce
3、r的实现。2.1.2 JobTracker和TaskTracker它们都是由一个master服务JobTracker和多个运行于多个节点的slaver服务TaskTracker两个类提供的服务调度的。master负责调度job的每一个子任务task运行于slave上,并监控它们,如果发现有失败的task就重新运行它,slave则负责直接执行每一个task。TaskTracker都需要运行在HDFS的DataNode上,而JobTracker则不需要,一般情况应该把JobTracker部署在单独的机器上。2.1.3
4、 JobClient第12页共12页MapReduce框架结构每一个job都会在用户端通过JobClient类将应用程序以及配置参数Configuration打包成jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task(即MapTask和ReduceTask)将它们分发到各个TaskTracker服务中去执行。2.1.4 JobInProgressJobClient提交job后,JobTracker会创建一个JobInProgress来跟踪
5、和调度这个job,并把它添加到job队列里。JobInProgress会根据提交的jobjar中定义的输入数据集(已分解成FileSplit)创建对应的一批TaskInProgress用于监控和调度MapTask,同时在创建指定数目的TaskInProgress用于监控和调度ReduceTask,缺省为1个ReduceTask。2.1.5 TaskInProgressJobTracker启动任务时通过每一个TaskInProgress来launchTask,这时会把Task对象(即MapTask和ReduceTask
6、)序列化写入相应的TaskTracker服务中,TaskTracker收到后会创建对应的TaskInProgress(此TaskInProgress实现非JobTracker中使用的TaskInProgress,作用类似)用于监控和调度该Task。启动具体的Task进程是通过TaskInProgress管理的TaskRunner对象来运行的。TaskRunner会自动装载jobjar,并设置好环境变量后启动一个独立的javachild进程来执行Task,即MapTask或者ReduceTask,但它们不一定运行在同一个TaskTrack
7、er中。2.1.6 MapTask和ReduceTask一个完整的job会自动依次执行Mapper、Combiner(在JobConf指定了Combiner时执行)和Reducer,其中Mapper和Combiner是由MapTask调用执行,Reducer则由ReduceTask调用,Combiner实际也是Reducer接口类的实现。Mapper会根据jobjar中定义的输入数据集按对读入,处理完成生成临时的对,如果定义了Combiner,MapTask会在Ma
8、pper完成调用该Combiner将相同key的值做合并处理,以减少输出结果集。MapTask的任务全完成即交给ReduceTask进程调用Reducer处理,生成最终结果对。这个
此文档下载收益归作者所有