第一范文网 - 专业文章范例文档资料分享平台

基于Hadoop的云计算研究与实现 - 图文

来源:用户分享 时间:2025/6/29 0:46:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

火龙果?整理 uml.org.cn

Hadoop的Map/Reduce框架也是基于这个原理实现的,下面简要介绍一下Map/Reduce框架主要组成及相互的关系。 1. Hadoop MapReduce作业的总体结构

运行于Hadoop的MapReduce应用程序最基本的组成部分包括一个Mapper和一个Reducer类,以及一个创建JobConf的执行程序,在一些应用中还可以包括一个Combiner类,它实际也是Reducer的实现。 1) JobTracker和TaskTracker

它们都是由一个master服务JobTracker和多个运行于多个节点的slaver服务TaskTracker两个类提供的服务调度的。master负责调度job的每一个子任务task运行于slave上,并监控它们,如果发现有失败的task就重新运行它,slave则负责直接执行每一个task。TaskTracker都需要运行在HDFS的DataNode上,而JobTracker则不需要,一般情况应该把JobTracker部署在单独的机器上。 2) JobClient

每一个job都会在用户端通过JobClient类将应用程序以及配置参数Configuration打包成jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task(即MapTask和ReduceTask)将它们分发到各个TaskTracker服务中去执行。 3)JobInProgress

JobClient提交job后,JobTracker会创建一个JobInProgress来跟踪和调度这个job,并把它添加到job队列里。JobInProgress会根据提交的job jar中定义的输入数据集(已分解成FileSplit)创建对应的一批TaskInProgress用于监控和调度MapTask,同时在创建指定数目的TaskInProgress用于监控和调度ReduceTask,缺省为1个ReduceTask。 4)TaskInProgress

JobTracker启动任务时通过每一个TaskInProgress来launch Task,这时会把Task对象(即MapTask和ReduceTask)序列化写入相应的TaskTracker服务中,TaskTracker收到后会创建对应的TaskInProgress(此TaskInProgress实现非JobTracker中使用的

- 27 -

火龙果?整理 uml.org.cn

TaskInProgress,作用类似)用于监控和调度该Task。启动具体的Task进程是通过TaskInProgress管理的TaskRunner对象来运行的。TaskRunner会自动装载job jar,并设置好环境变量后启动一个独立的java child进程来执行Task,即MapTask或者ReduceTask,但它们不一定运行在同一个TaskTracker中。 5) MapTask和ReduceTask

一个完整的job会自动依次执行Mapper、Combiner(在JobConf指定了Combiner时执行)和Reducer,其中Mapper和Combiner是由MapTask调用执行,Reducer则由ReduceTask调用,Combiner实际也是Reducer接口类的实现。Mapper会根据job jar中定义的输入数据集按对读入,处理完成生成临时的对,如果定义了Combiner,MapTask会在Mapper完成调用该Combiner将相同key的值做合并处理,以减少输出结果集。MapTask的任务全完成即交给ReduceTask进程调用Reducer处理,生成最终结果对。这个过程在下一部分再详细介绍。下图3.5描述了Map/Reduce框架中主要组成和它们之间的关系:

图3.5Map/Reduce框架中主要组成和它们之间的关系图

- 28 -

火龙果?整理 uml.org.cn

用户可以配置和向框架提交MapReduce任务(简言之,作业)。一个MapReduce作业包括Map任务,混淆过程,排序过程和一套Reduce任务。然后框架会管理作业的分配和执行,收集输出和向用户传递作业结果。

一个作业的组成要素如表格3.2和图3.6所示。 表格 3.2 MapReduce任务的构成要素 要素 配置作业 输入分割和派遣 接受分割的输入后,每个Map任务的启动 Map函数,对于每个键值对被调用一次 混淆,分割和排序Map的输出并得到快 排序,将混淆的块进行组合和排序 接受排序快后,每个Reduce任务的启动 有谁处理 用户 Hadoop框架 Hadoop框架 用户 Hadoop框架 Hadoop框架 Hadoop框架 Reduce函数,对于每一个关键字和对象的所有数用户 据值被调用一次 收集输出结果,在输出目录存储输出结果,输出Hadoop框架 结果分为N个部分,N是Reduce任务的号码 用户负责处理作业初始化,指定输入位置,指定输入和确保输入格式和位置是正确无误的。框架负责在集群中TaskTracker节点上派遣作业,执行map过程,混淆过程,排序过程和Reduce过程,把输出写入输出目录,最后通知用户作业完成状态。

- 29 -

火龙果?整理 uml.org.cn

图3.6 MapReduce 流程

2. Job创建过程

1)JobClient.runJob() 开始运行job并分解输入数据集

一个MapReduce的Job会通过JobClient类根据用户在JobConf类中定义的InputFormat实现类来将输入的数据集分解成一批小的数据集,每一个小数据集会对应创建一个MapTask来处理。JobClient会使用缺省的FileInputFormat类调用

FileInputFormat.getSplits()方法生成小数据集,如果判断数据文件是isSplitable()的话,会将大的文件分解成小的FileSplit,当然只是记录文件在HDFS里的路径及偏移量和Split

- 30 -

搜索更多关于: 基于Hadoop的云计算研究与实现 - 图文 的文档
基于Hadoop的云计算研究与实现 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c67j5e98wt86cyp27mpar_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top