Yarn的ApplicationMaster介绍

Yarn的ApplicationMaster介绍

  1. ApplicationMaster基本介绍

    ​ ApplicationMaster实际上是特定计算框架的一个实例,每种计算框架都有自己独特的ApplicationMaster,负责与ResourceManager协商资源,并和NodeManager协同来执行和监控Container。MapReduce只是可以运行在YARN上一种计算框架。

  2. ApplicationMaster职能

    (1) 初始化向ResourceManager报告自己的活跃信息的进程

    (2) 计算应用程序的的资源需求。

    (3) 将需求转换为YARN调度器可以理解的ResourceRequest。

    (4) 与调度器协商申请资源

    (5) 与NodeManager协同合作使用分配的Container。

    (6) 跟踪正在运行的Container状态,监控它的运行。

    (7) 对Container或者节点失败的情况进行处理,在必要的情况下重新申请资源。

  3. 报告活跃

    (1) 注册

    ​ ApplicationMaster执行的第一个操作就是向ResourceManager注册,注册时AM告诉RM它的IPC的地址和网页的URL。

    ​ IPC地址是面向客户端的服务地址;网页URL是AM的一个Web服务的地址,客户端可以通过Http获取应用程序的状态和信息。

    ​ 注册后,RM返回AM可以使用的信息,包括:YARN接受的资源的大小范围、应用程序的ACL信息。

    (2) 心跳

    ​ 注册成功后,AM需要周期性地发送心跳到RM确认他还活着。参数yarn.am.liveness-monitor.expiry配置AM心跳最大周期,如果RM发现超过这个时间还没有收到AM的心跳,那么就判断AM已经死掉。

  4. 资源需求

    AM所需要的资源分为静态资源和动态资源。

    (1) 静态资源

    ​ 在任务提交时就能确定,并且在AM运行时不再变化的资源是静态资源,比如MapReduce程序中的Map的数量。

    (2) 动态资源

    ​ AM在运行时确定要请求数量的资源是动态资源。

  5. 调度任务

    ​ 当AM的资源请求数量达到一定数量或者到了心跳时,AM才会发送心跳到RM,请求资源,心跳是以 ResourceRequest形式发送的,包括的信息有:resourceAsks、ContainerID、containersToBeReleased。

    ​ RM响应的信息包括:新分配的Container列表、已经完成了的Container状态、集群可用的资源上限。

  6. 启动container

    (1) AM从RM那里得到了Container后就可以启动Container了。

    (2) AM首先构造ContainerLaunchContext对象,包括分配资源的大小、安全令牌、启动Container执行的命令、进程环境、必要的文件等

    (3) AM与NM通讯,发送StartContainerRequest请求,逐一或者批量启动Container。

    (4) NM通过StartContainerResponse回应请求,包括:成功启动的Container列表、失败的Container信信息等。

    (5) 整个过程中,AM没有跟RM进行通信。

    (6) AM也可以发送StopContainerRequest请求来停止Container。

  7. 完成container

    ​ 当Container执行结束时,由RM通知AM Container的状态,AM解释Container状态并决定如何继续操作。所以YARN平台只是负责为计算框架提供Container信息。

  8. ApplicationMaster启动过程

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值