YARN 中 Application Manager 和 Application Master 的区别?

Difference between Application Manager and Application Master in YARN?

我理解了 MRv1 works.Now 我正在尝试理解 MRv2.. YARN 中的 Application Manager 和 Application Master 有什么区别?

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

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

Reference: Hadoop YARN Book

这里的Application是指分配给框架的单个作业。

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

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

这有意义吗?

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

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

关键概念:

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

现在,让我们讨论一下 Job/Application 通过 YARN 的流程

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

我希望这能说明一些问题