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

had*_*per 14 hadoop mapreduce hadoop-yarn

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

小智 24

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

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

在此输入图像描述

参考:Hadoop YARN Book


Hit*_*esh 7

为了理解这个概念,我们需要了解 Hadoop 中通过 YARN 提交的作业/应用程序的完整流程。

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

关键概念:

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

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

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

我希望这能澄清一些


EMa*_*ual 5

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

在此处输入图片说明

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

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

这有意义吗?