YARN中应用程序管理器和Application Master之间的区别?

时间:2015-06-21 17:19:29

标签: hadoop mapreduce yarn

我理解MRv1是如何工作的。现在我想了解MRv2 .. YARN中应用程序管理器和应用程序管理器之间有什么区别?

3 个答案:

答案 0 :(得分:20)

术语Application Master和Application Manager通常可互换使用。实际上,Application Master是请求,启动和监视应用程序特定资源的主要容器,而Application Manager是ResourceManager中的一个组件。有关应用程序管理器的更多详细信息如下所示。

ApplicationsManager负责维护已提交的集合 应用。提交申请后,首先验证申请表 规范并拒绝任何请求其不可满足资源的应用程序 ApplicationMaster(即群集中没有足够资源的节点 运行ApplicationMaster本身)。然后确保没有其他应用程序 使用相同的应用程序ID提交 - 可能由错误引起的情况 或恶意客户端。最后,它将允许的应用程序转发给调度程序。 该组件还负责记录和管理已完成的应用程序 在他们从ResourceManager完全撤离之前的一段时间 记忆。当应用程序完成时,它会在守护进程中放置一个ApplicationSummary 日志文件。 最后,ApplicationsManager会长时间保留已完成应用程序的缓存 应用程序完成以支持用户对应用程序数据的请求(通过Web UI或命令 线)。配置属性yarn.resourcemanager.max-completed-applications 控制ResourceManager的此类已完成应用程序的最大数量 在任何时候记得。缓存是先进先出列表,包含最早的应用程序 被搬出去容纳刚刚完成的申请。

enter image description here

Reference: Hadoop YARN Book

答案 1 :(得分:2)

这里的应用程序是指分配给框架的单个作业。

enter image description here

当客户端将应用程序提交给资源管理器时,应用程序管理器负责接受或拒绝该应用程序。

当资源管理器将单个应用程序分配给节点管理器时,应用程序主机负责执行该应用程序。

这有意义吗?

答案 2 :(得分:1)

要理解这个概念,我们需要了解在 Hadoop 中通过 YARN 提交的 Job/Application 的完整流程。

在我们跳转到执行流程之前,我们需要了解一些关键概念:

关键概念:

  1. Yarn 由资源管理器和节点管理器组成
  2. 只有一个资源管理器运行在主节点上
  3. 将在每个数据节点上运行多个节点管理器
  4. 资源管理器负责执行任何作业/应用程序的资源管理
  5. 节点管理器负责处理提交给它们的各个任务/流程
  6. 请注意,YARN 是一个通用框架,它不仅用于执行 Map Reduce 作业。它可用于执行任何应用程序,例如 Java 应用程序的 main()。

现在,让我们讨论通过 YARN 的作业/应用程序流程

  1. 客户向 YARN 提交作业。
  2. 提交的作业可以是 Map Reduce 作业或任何其他应用程序/进程
  3. 此工作/申请由资源经理挑选
  4. 由于可以有多个作业/应用提交给资源管理器,因此资源管理器会检查调度算法、可用容量以查看提交的作业/应用是否可以启动
  5. 当资源管理器发现它可以启动新提交的作业/应用程序时,它会分配一个容器。容器是启动作业/应用程序所需的一组资源(CPU、内存等)
  6. 它检查哪个节点可以接受这个请求,一旦它找到一个节点,它就会联系适当的节点管理器以获取相同的信息
  7. 然后节点管理器将实际分配执行作业/应用程序所需的资源,然后在容器内启动应用程序主进程
  8. 应用程序主进程是作业/应用程序执行的主要进程。请注意,Application Master 是特定于框架的实现。 Map Reduce 框架有自己的 Application Master 实现。
  9. Application Master 将检查是否需要额外的资源或容器来执行作业/应用程序。当我们提交一个 Map Reduce 作业时就是这种情况,其中需要多个 Mapper 和 Reducer 来完成作业。
  10. 如果需要额外的资源,Application Master 将与资源管理器协商分配资源/容器。 Application Master 将负责执行和监控应用程序/作业的各个任务。
  11. Application Master 向资源管理器发出的请求称为资源请求。该请求包含执行单个任务所需的资源和位置约束。需要位置约束,因为任务需要在尽可能靠近数据的地方运行以节省网络带宽。 12 作为对资源请求的响应,资源管理器将在所选节点上生成一个节点管理器。然后节点管理器将为容器分配资源。在该容器中,任务将运行。此任务称为应用进程。
  12. 如果有多个 Mapper,那么将有多个应用程序进程在多个节点上运行(在一个容器中)。他们每个人都会将他们的热拍发送到他们的应用程序主进程。这就是 Application Master 将监控它启动的单个任务的方式。
  13. Application Master 还将其心跳信号发送给资源管理器,以指示作业/应用程序执行的状态。
  14. 完成任何应用程序执行后,该应用程序的应用程序主程序将被取消注册。

我希望这能说明问题