美文网首页
Hadoop技术内幕_YARN--应用程序设计方法

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

作者: 泽林呗 | 来源:发表于2017-09-21 20:34 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Hadoop技术内幕_YARN--应用程序设计方法

          本文链接:https://www.haomeiwen.com/subject/dzqtextx.html