ApplicationMaster,ResourceManager和NodeManager通信过程
2017-05-22 09:39
288 查看
ApplicationMaster与ResourceManager和NodeManager的交互:
rpc交互: 1.与ResourceManager交互,ApplicationMaster可获得计算所需的资源
2.与NodeManager交互,ApplicationMaster可启动计算任务并监控它的生命周期
1.ApplicationMaster与ResourceManager之间通信主要有以下三个步骤
1).ApplicationMaster通过rpc向ResourceManager注册。ApplicationMaster启动时,首先向ResourceManager注册,注册消息封装到
ProtocolBuffers消息RegisterApplicationMasterRequest中,主要包含以下字段:
**host: ApplicationMaster启动所在的节点的host
**rpc_port: ApplicationMaster本次启动对外rpc的端口号
**tracking_url: ApplicationMaster对外提供的追踪的web url,用户可以通过该url查看应用程序执行状态
ApplicationMaster注册成功后,ResourceManager将返回一个RegisterApplicationMasterResponse类型的对象。该返回
对象主要包含以下几个字段:
**maximumCapability: 最大可申请的单个Container的占用的资源量
**application_ACLs: 应用程序访问控制列表
2).注册成功后,ApplicationMaster通过rpc向ResourceManager申请资源(资源以Container为单位),rpc请求中主要包含以下几个字段:
**ask: AppliationMaster请求的资源列表,每个请求资源可以用ResourceRequest表示。ResourceRequest包含以下几个主要字段:
***priority: 资源优先级,为正整数,值越小,优先级越高,分配的资源的优先级也就越高
***resouce_name: 期望资源所在的节点,如果是*,表示任何机器上的资源都可以
***capability: 所需的资源量,支持cpu和内存两种资源
***num_container: 满足以上要求的资源数目
**release: ApplicationMaster释放的资源列表
ResourceManager接受请求后,将返回以下一个AllocateResponse类型的对象,该对象主要包含以下字段:
**a_m_command:AppliactionMaster需要执行的命令。主要有两个取值:AM_RESYNC表示重启,AM_SHUTDOWN表示关闭。
当ResourceManager重启或者应用程序信息出现不一致的状态时,可能要求AppliactionMaster重启
当处于黑名单时,则要求ApplicationMaster关闭
**allocated_container: 分配给应用程序的Container列表(Container在mr中相当于task,在spark中相当于executor)
3)应用程序执行完毕后,ApplicationMaster将通过rpc告诉ResoureManager程序执行完毕并退出
2,ApplicationMaster和NodeManager之间的通信主要也有以下的三个步骤:
1)ApplicationMaster将申请到的资源进行二次分配,通过rpc函数与对应的NodeManager(不一定和ApplicationMater在同一节点上)通信,以启动
Container(包含任务描述和资源描述等信息),rpc函数中的参数类型为StartContainersRequest,该类型参数本身含有两个以下两个字段:
*container_launch_context:封装了Container的执行环境,主要包含以下几个字段:
**localResources: Container执行所需的本地资源,比如字典文件,jar包或者可执行文件,以key-value格式保存
**environment: Container执行所需的环境变量
----------------------------------------
*container_token: Container启动时的安全令牌
函数执行成功后,NodeManager会返回一个StartContainerResponse类型的对象,该对象主要包含以下几个字段:
*services_meta_data: 返回的元数据信息
*successed_requests: 成功运行的Container列表
*failed_requests: 运行失败的Container列表
2)Container成功启动后,ApplicationMaster通过rpc向NodeManager询问Container运行状态,一旦任务失败,ApplicationMaster会尝试
重新为任务向ResouceManager申请资源
3)一旦一个Container运行完成后,ApplcationMaster会通过rpc函数释放Container
根据上面描述作图如下:
现在我们可以总结出它们三个组件间的关系:当向yarn提交了一个任务时,ResourceManager会与对应的NodeManager通信,尝试启动一个ApplicationMaster,在ApplicationMaster成功启动后,将向ResouceManager注册自身,注册信息主要包括自己所在节点的host,rpc端口号和用于外部追踪应用执行程度的weburl,ResouceManager接收到该rpc注册函数后,将返回一个RegisterApplicationMasterResponse类型的对象,主要包含可以申请最大的单个Container所占的资源量。
注册成功后,ApplicationMaster会向ResourceManager申请Cotainer(s)资源,ResourceManager接收到该请求后,将会返回一个AllocateResponse对象,
该对象包含希望ApplicationMaster执行的命令和分配给应用程序的资源列表,也就是Container列表。当ApplicationMaster得到该资源列表后,将通过rpc
与NodeManager通信以启动Container,Container启动成后,AppicationMaster会周期性地通过rpc向NodeManager询问Container的运行状态
如果此时Container执行失败,ApplicationMaster会重新和ResourceManager通信申请新的资源。如果Container执行成功后,ApplicationMaster
将会通过rpc函数释放Container。该应用程序对应的所有Container都执行成功后,ApplicationMaster将通过rpc告诉ResoureManager程序执行完毕并退出
rpc交互: 1.与ResourceManager交互,ApplicationMaster可获得计算所需的资源
2.与NodeManager交互,ApplicationMaster可启动计算任务并监控它的生命周期
1.ApplicationMaster与ResourceManager之间通信主要有以下三个步骤
1).ApplicationMaster通过rpc向ResourceManager注册。ApplicationMaster启动时,首先向ResourceManager注册,注册消息封装到
ProtocolBuffers消息RegisterApplicationMasterRequest中,主要包含以下字段:
**host: ApplicationMaster启动所在的节点的host
**rpc_port: ApplicationMaster本次启动对外rpc的端口号
**tracking_url: ApplicationMaster对外提供的追踪的web url,用户可以通过该url查看应用程序执行状态
ApplicationMaster注册成功后,ResourceManager将返回一个RegisterApplicationMasterResponse类型的对象。该返回
对象主要包含以下几个字段:
**maximumCapability: 最大可申请的单个Container的占用的资源量
**application_ACLs: 应用程序访问控制列表
2).注册成功后,ApplicationMaster通过rpc向ResourceManager申请资源(资源以Container为单位),rpc请求中主要包含以下几个字段:
**ask: AppliationMaster请求的资源列表,每个请求资源可以用ResourceRequest表示。ResourceRequest包含以下几个主要字段:
***priority: 资源优先级,为正整数,值越小,优先级越高,分配的资源的优先级也就越高
***resouce_name: 期望资源所在的节点,如果是*,表示任何机器上的资源都可以
***capability: 所需的资源量,支持cpu和内存两种资源
***num_container: 满足以上要求的资源数目
**release: ApplicationMaster释放的资源列表
ResourceManager接受请求后,将返回以下一个AllocateResponse类型的对象,该对象主要包含以下字段:
**a_m_command:AppliactionMaster需要执行的命令。主要有两个取值:AM_RESYNC表示重启,AM_SHUTDOWN表示关闭。
当ResourceManager重启或者应用程序信息出现不一致的状态时,可能要求AppliactionMaster重启
当处于黑名单时,则要求ApplicationMaster关闭
**allocated_container: 分配给应用程序的Container列表(Container在mr中相当于task,在spark中相当于executor)
3)应用程序执行完毕后,ApplicationMaster将通过rpc告诉ResoureManager程序执行完毕并退出
2,ApplicationMaster和NodeManager之间的通信主要也有以下的三个步骤:
1)ApplicationMaster将申请到的资源进行二次分配,通过rpc函数与对应的NodeManager(不一定和ApplicationMater在同一节点上)通信,以启动
Container(包含任务描述和资源描述等信息),rpc函数中的参数类型为StartContainersRequest,该类型参数本身含有两个以下两个字段:
*container_launch_context:封装了Container的执行环境,主要包含以下几个字段:
**localResources: Container执行所需的本地资源,比如字典文件,jar包或者可执行文件,以key-value格式保存
**environment: Container执行所需的环境变量
----------------------------------------
*container_token: Container启动时的安全令牌
函数执行成功后,NodeManager会返回一个StartContainerResponse类型的对象,该对象主要包含以下几个字段:
*services_meta_data: 返回的元数据信息
*successed_requests: 成功运行的Container列表
*failed_requests: 运行失败的Container列表
2)Container成功启动后,ApplicationMaster通过rpc向NodeManager询问Container运行状态,一旦任务失败,ApplicationMaster会尝试
重新为任务向ResouceManager申请资源
3)一旦一个Container运行完成后,ApplcationMaster会通过rpc函数释放Container
根据上面描述作图如下:
现在我们可以总结出它们三个组件间的关系:当向yarn提交了一个任务时,ResourceManager会与对应的NodeManager通信,尝试启动一个ApplicationMaster,在ApplicationMaster成功启动后,将向ResouceManager注册自身,注册信息主要包括自己所在节点的host,rpc端口号和用于外部追踪应用执行程度的weburl,ResouceManager接收到该rpc注册函数后,将返回一个RegisterApplicationMasterResponse类型的对象,主要包含可以申请最大的单个Container所占的资源量。
注册成功后,ApplicationMaster会向ResourceManager申请Cotainer(s)资源,ResourceManager接收到该请求后,将会返回一个AllocateResponse对象,
该对象包含希望ApplicationMaster执行的命令和分配给应用程序的资源列表,也就是Container列表。当ApplicationMaster得到该资源列表后,将通过rpc
与NodeManager通信以启动Container,Container启动成后,AppicationMaster会周期性地通过rpc向NodeManager询问Container的运行状态
如果此时Container执行失败,ApplicationMaster会重新和ResourceManager通信申请新的资源。如果Container执行成功后,ApplicationMaster
将会通过rpc函数释放Container。该应用程序对应的所有Container都执行成功后,ApplicationMaster将通过rpc告诉ResoureManager程序执行完毕并退出
相关文章推荐
- WCF基础教程(三)——WCF通信过程及配置文件解析
- TCP 通信过程中各步骤的状态
- IPMI和BMC 通信的过程
- 客户端到服务器端通信过程及原理
- 客户端到服务器端的通信过程及原理
- Socket通信过程
- TR-069 协议完整的通信过程
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
- 使用curl查看网页源码/自动跳转/显示头信息/显示通信过程/发送表单信息/文件上传/Referer字段/User Agent
- .NET Core微服务之路:利用DotNetty实现一个简单的通信过程
- Android EventLine框架制作过程 三 Activity和Fragment之间的相互通信
- ssl通信过程
- linux 下进程间通过信号进行通信的具体实现过程
- 无废话WCF入门教程二[WCF应用的通信过程]
- socket 的通信过程
- 【网络编程】使用流式套接字实现简单的客户端/服务端通信过程
- SPI通信总线原理及工作过程
- HTTP协议通信过程
- 点对点通信过程报文组装流程
- hadoop中NameNode、DataNode、Secondary、NameNode、ResourceManager、NodeManager 介绍