Hadoop技术内幕_YARN--应用程序设计方法

YARN上的应用程序主要分为短应用程序(MapReduce)和长应用程序(Storm)

通常而言,编写一个YARN Appcalition会涉及3个RPC协议:
  1. ApplicationClientProtocol
  2. ApplicationMasterProtocol
  3. ContainerManagementProtocol
image.png

客户端编写流程

步骤一 Client通过RPC函数ApplicationClientProtocol#getNewApplication从ResourceManager中获取唯一的application ID
步骤二 Client通过RPC函数ApplicationClientProtocol#submitApplication将ApplicationMaster提交到ResourceManager上
客户端编程库(Yarnclient)

ApplicationMaster设计

AM需要与RM和NM两个服务交互
通过与RM交互,AM可获得任务计算所需的资源
通过与NM交互,AM可启动计算任务(container),并监控直到运行完成

AM-RM编写流程
  1. AM通过RPC函数ApplicationMasterProtocol#registerApplicationMaster向ResourceManager注册
    一旦ApplicationMaster注册成功,RM会为它返回一个RegisterApplicationMasterResponse类型的返回值,该对象包含应用程序可申请的最大资源量、应用程序访问控制列表等信息
  2. ApplicationMaster通过RPC函数ApplicationMasterProtocol#allocate向RM申请资源(以container形式表示)
  3. Application通过RPC函数ApplicationMasterProtocol#finishApplicationMaster告诉Res应用程序执行完毕,并退出。
    ApplicationMaster将重复步骤2,不断为应用程序申请资源,知道资源得到满足或者整个应用程序运行完成。
AM-NM编写流程
  1. ApplicationMaster将申请到的资源二次分配给内部的任务,并通过RPC函数ContainerManagementProtocol#startContainer与对应的NM通信以启动Container(包含任务描述,资源描述等信息),该函数的参数类型为StartContainerRequest,主要包含一个类型为StartContainerRequest的字段
  2. 为了实时掌握各个Container运行状态,AM可通过RPC函数ContainerManagementProtocol#getContainerStatus向NM询问Container运行状态,一旦发现某个Container运行失败,ApplicationMaster可尝试重新为对应的任务申请资源
  3. 一旦一个Container运行失败后,AM可通过RPC函数ContainerManagementProcotol#stopContainer释放Container。
ApplicationMaster编程库
  1. AM-RM编程库
image.png
  1. AM-NM编程库
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容