我正在读一本书,上面的图片被描述为YARN中的ResourceManager
。
他们说:
Admin and Client Service
对客户交互负责,例如提交作业请求,启动,重启等等#34; ApplicationMaster Launcher
在客户提交作业时启动ApplicationMaster的容器。" 然后他们用下面的陈述与他们上面所说的相矛盾:
ApplicationManager负责接受客户端的作业提交请求,协商容器以执行特定于ApplicationMaster的应用程序,并提供服务以在失败时重新启动ApplicationMaster。
问题:
我认为管理员和客户端服务的角色是接受客户端作业提交而不是ApplicationManager角色?基本上,ApplicationManager从Admin和Client服务获取作业,并使用ApplicationMaster Launcher实际启动具有作业提交中指定资源的ApplicationMaster吗?
答案 0 :(得分:1)
是的,您的假设是正确的应用程序管理员从管理员和客户服务获得工作。 ApplicationsManager负责维护已提交的应用程序或作业的集合。提交申请后,它首先验证应用程序的规范并拒绝任何为其请求不可满足资源的应用程序。一旦应用程序管理员满意,则应用程序主启动程序启动应用程序主机。 应用程序主机负责协商来自资源管理器的资源,并与节点管理器一起执行和监视容器及其资源消耗。一个重要的事情是每个工作都有自己的应用程序主。这不适用于应用程序管理器。
如果您想查看纱线内的沟通流程,可以访问此链接http://javacrunch.in/Yarn.jsp。
希望这可以解决您的问题。
答案 1 :(得分:1)
您可以在YARN官方文档页面中找到有关ApplicationsManager的更多详细信息。
我们的想法是拥有全球 ResourceManager (RM)和每个应用 ApplicationMaster (AM)
每个应用程序 ApplicationMaster 实际上是一个特定于框架的库,其任务是协调ResourceManager中的资源并与NodeManager一起执行和监视任务。
ResourceManager 是在系统中所有应用程序之间仲裁资源的最终权限。
ResourceManager 有两个主要组件:计划程序和 ApplicationsManager 。
计划程序负责根据熟悉的容量,队列等限制将资源分配给各种正在运行的应用程序。计划程序不会监视或跟踪应用程序的状态。
ApplicationsManager 负责
每个应用程序 ApplicationMaster 负责从计划程序协商适当的资源容器,跟踪其状态并监控进度。
关于您的查询
与ApplicationsMaster合作的当ApplicationManager从管理和客户端服务检索作业时,作业是否包含启动ApplicationMaster所需的资源?就像ResourceManager如何知道ApplicationMaster需要多少资源一样?
ResoruceManager(ApplicationsManager + Scheduler)确保为客户端请求分配资源,并执行上述角色。