MapReduce的工作机制

本文详细解析了MapReduce的执行过程,包括作业提交、初始化、任务分配与执行、状态更新及成功处理。同时,深入探讨了MapReduce在任务、ApplicitionMaster及资源管理器运行失败时的故障恢复机制。

一、MapReduce执行过程

1、提交作业

  1. 向资源管理器(RecourceManager)申请一个新应用的ID。
  2. 检查作业的输出。没有指定目录或目录不存在则抛出错误。
  3. 检查作业的输入分片。检查输入路径并计算分片,如果计算不出分片,则抛出错误。
  4. 共享应用和任务资源文件。将应用jar包,其他文件上传到HDFS。
  5. 启动submitApplicition(),提交作业

2、作业的初始化

  1. 资源管理器接收到submitApplicition()后,启动容器以运行applicitionMaster。
  2. 本地化任务资源,下载HDFS上的共享文件。
  3. applicitionMaster自主决定是否只在本机运行还是启动其他节点。

3、任务的分配

  1. 当步骤2.3启动其他节点时,为map和reduce向RecourceManager申请资源。
  2. 同时也为任务指定CPU资源和内存资源。

4、任务的执行

  1. 资源管理器分配容器资源后,applicitionMaster远程RPC通信启动容器。
  2. 本地化任务资源,下载HDFS上的共享文件。
  3. YarnChild在特定JVM中运行map任务和reduce任务。(运行在JVM中的好处是map、reduce中的错误不会影响到节点管理器)

5、任务状态和进度的更新

  1. applicitionMaster与map、reduce进程通信,询问状态和进度。
  2. 客户端向applicitionMaster程通信,询问状态和进度。

6、任务的成功

  1. 当applicitionMaster收到最后一个任务完成时,更新任务状态。
  2. applicitionMaster和容器清理工作状态,删除中间结果信息。

二、MapReduce执行失败

1、任务运行失败

  1. 如果map、reduce错误,则JVM向applicitionMaster报告错误并记录日志。
  2. 如果JVM错误,则NodeManager向applicitionMaster报告错误并记录日志。

2、ApplicitionMaster运行失败

  1. 定时心跳的RecourceManager发现applicitionMaster运行失败,则在新节点重启一个applicitionMaster,并根据历史作业恢复程序运行状态。
  2. 客户端在任务初始化时会记录applicitionMaster位置,当通信失败时重新向RecourceManager询问新的位置。

3、资源管理器运行失败

  1. 一般是用Zookeeper记录资源管理器的程序信息,当RecourceManager运行失败时,辅助RecourceManager会成为新的RecourceManager,并恢复Zookeeper中的程序信息和状态。

三、Shuffle过程

  1. map任务输出到环形缓冲空间中。(当到达80%后会溢写输出文件) —— MapOutput
  2. 在缓冲空间中,对数据进行分区,并对每个分区的数据进行排序。 —— partion and sort
  3. 如果存在combiner,则在排序后进行combiner。 —— combiner
  4. 将缓存中的数据新建为溢写文件。 —— spill to disk
  5. 由于map一直在输出,会产生多个溢写文件,将多个溢写文件(已经在磁盘上)进行合并为一个文件并将多个溢写文件按照分区后的数据再次排序。 —— merge on disk and sort
  6. reduce端拉取磁盘上的数据。 —— fetch
  7. 对多个输入到reduce上的文件进行合并并维持其顺序排序。 —— merge
  8. reduce输出到文件系统。 —— fileOutput
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值