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

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

通常而言,编写一个YARN Appcalition会涉及3个RPC协议:
  1. ApplicationClientProtocol
  2. ApplicationMasterProtocol
  3. ContainerManagementProtocol
Hadoop技术内幕_YARN--应用程序设计方法_第1张图片
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编程库
Hadoop技术内幕_YARN--应用程序设计方法_第2张图片
image.png
  1. AM-NM编程库
Hadoop技术内幕_YARN--应用程序设计方法_第3张图片
image.png

你可能感兴趣的:(Hadoop技术内幕_YARN--应用程序设计方法)