ad

打开《OpenStack 云平台-部署与高可用实战》_6. MapReduce 框架设计

网友投稿 112 2023-11-13

【摘要】 本书摘自《OpenStack 云平台-部署与高可用实战》一书中第6节,肖睿 雷宇飞主编。

6. MapReduce 框架设计

在第一代 MapReduce产品中,用于执行 MapReduce 作业的机器包含两种角色。

打开《OpenStack 云平台-部署与高可用实战》_6. MapReduce   框架设计

●JobTracker: 执行作业的管理和调度工作。JobTracker 负责创建、调度作业中的 子任务,并监控它们,当发现有失败的任务时重新选择运行子任务。JobTracker 是一个 Master 服务, 一个 Hadoop 群集中通常只有一台 JobTracker 角色,建议将它部署在单独 的机器上。

● TaskTracker: 执行具体的子任务。TaskTracker是一个运行在多个节点上的 Slave 服务,需要部署在HDFS 的 DataNode 上。

在 YARN中,JobTracker+TaskTracker 的架构模式已经被新的架构替代,关于 YARN 的内容会在稍后进行讲解。无论是 MapReduce 还是 YARN, 都不会影响用户编写 MapReduce 程序,因为运行 MapReduce 作业的过程对开发人员是透明的。

7.MapReduce 编程模型

当用户编写完一个 MapReduce 程序并将其配置为一个 MapReduce 作业 (Job), 准 备在 MapReduce 编程模型中运行时,其经历的流程大概包含Input 、Splitting 、Mapping、 Shufling 、Reducing 和 Final result 等。作业是指为了执行一次分布式计算任务,通过编 写 MapReduce 程序并将其提交到MapReduce 执行框架中执行的全过程。当客户端提交 作业到 JobTracker 后,数据流如图6.6所示。

在图6.6中,待处理数据从输入到最后输出依次经历五个阶段。

(1)Input: 由 JobTracker创建该作业,并根据作业的输入计算所需输入分片。分片 的数量取决于输入目录中的文件数量。如果单个文件超过HDFS 默认块大小(64MB), 将按照块大小进行分割。

(2)Splitting: 由作业调度器获取作业的输入分片信息,并按照指定的规则将输 入分片中的记录转换成键值对。其中,“键”对应每一行的起始位置,以字节为单位; “值”对应本行具体的文本内容。最终为每个分片创建一个 MapTask 并分配到某个

TaskTracker。

(3)Mapping:TaskTracker 执行 MapTask 并根据该阶段的程序代码,处理输入的每 一个键值对并产生新的键值对,保存在本地。

(4)Shuffling; 在各 TaskTracker之间进行数据交换,根据键进行分组,并将MapTask 的输出作为 ReduceTask 的输入。

(5)Reducing: 根据Shuffling 阶段的输出信息执行 ReduceTask。即根据该阶段的代 码处理输入的每一个键值对,并输出最终结果。

综上所述,Hadoop 将每个 MapReduce 计算任务初始化为一个作业。其处理流程中 包括两个主要处理阶段,分别是map 阶段和reduce 阶段。两个阶段均以键值对作为输入, 经过处理后再同样以键值对的形式输出。整个 MapReduce 编程模型的主要任务是通过输 入键值对集合来产生全新的键值对集合。

从MapReduce 框架中的角度来看, 一个MapReduce 作业的工作流程如图6.7所示。 一个完整的 MapReduce 作业的运行过程包括以下10个步骤。

(1)编写 MapReduce 程序并运行一个作业。

(2)向 JobTracker 获取一个新的作业 ID。

(3)复制作业资源到 HDFS。

(4)向 JobTracker 提交作业。

(5)JobTracker 初始化作业。

(6)检索输入分片。

(7)心跳通信。TaskTracker 循环程序定期向 JobTracker 发送心跳信息,JobTracker 通过该信息判断TaskTracker 是否存活,同时也充当二者之间的消息通道。

(8)获取作业资源。

(9)分配任务。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Python 编程与应用实践》_成为Python大佬_7.3 二进制文件操作
下一篇:打开《OpenStack 云平台-部署与高可用实战》_9.3.3.2.OpenShift 术语
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×