写点什么

MapReduce 作业生命周期

  • 2022-10-24
    北京
  • 本文字数:966 字

    阅读完需:约 3 分钟

MapReduce作业生命周期

MapReduce 作业作为一种分布式应用程序,可直接运行在 Hadoop 资源管理系统 YARN 之上(MapReduce On YARN)。每个 MapReduce 应用程序由一个 MRAppMaster 以及一系列 MapTask 和 ReduceTask 构成,它们通过 ResourceManager 获得资源,并由 NodeManager 启动运行。

当用户向 YARN 中提交一个 MapReduce 应用程序后,YARN 将分两个阶段运行该应用程序:第一个阶段是由 ResourceManager 启动 MRAppMaster;第二个阶段是由 MRAppMaster 创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行成功。如图 YARN 的工作流程分为以下几个步骤:

1)用户向 YARN 集群提交应用程序,该应用程序包括以下配置信息:MRAppMaster 所在 jar 包、启动 MRAppMaster 的命令及其资源需求(CPU、内存等)、用户程序 jar 包等。


2)ResourceManager 为该应用程序分配第一个 Container,并与对应的 NodeManager 通信,要求它在这个 Container 中启动应用程序的 MRAppMaster。


3)MRAppMaster 启动后,首先向 ResourceManager 注册(告之所在节点、端口号以及访问链接等),这样,用户可以直接通过 ResourceManager 查看应用程序的运行状态,之后,为内部 Map Task 和 Reduce Task 申请资源并运行它们,期间监控它们的运行状态,直到所有任务运行结束,即重复步骤 4~7。


4)MRAppMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源。


5)一旦 MRAppMaster 申请到(部分)资源后,则通过一定的调度算法将资源分配给内部的任务,之后与对应的 NodeManager 通信,要求它启动这些任务。


6)NodeManager 为任务准备运行环境(包括环境变量、jar 包、二进制程序等),并将任务执行命令写到一个 shell 脚本中,并通过运行该脚本启动任务。


7)启动的 Map Task 或 Reduce Task 通过 RPC 协议向 MRAppMaster 汇报自己的状态和进度,以让 MRAppMaster 随时掌握各个任务的运行状态,从而可以在任务失败时触发相应的容错机制。在应用程序运行过程中,用户可随时通过 RPC 向 MRAppMaster 查询应用程序的当前运行状态。


8)应用程序运行完成后,MRAppMaster 通过 RPC 向 ResourceManager 注销,并关闭自己。


ResourceManager 为 MRAppMaster 分配资源,并告之 NodeManager 启动它,MRAppMaster 启动后,会通过心跳维持与 ResourceManager 之间的联系;MRAppMaster 负责为 MapTask/ReduceTask 申请资源,并通知 NodeManager 启动它们,MapTask/ReduceTask 启动后,会通过心跳维持与 MRAppMaster 之间的联系。


发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
MapReduce作业生命周期_mapreduce_穿过生命散发芬芳_InfoQ写作社区