Hadoop(八):YARN框架简介

YARN组件图

  • Container是YARN框架中对应资源的抽象,封装了运行节点上的资源(内存+CPU)

  • NodeManager负责Container状态的维护,通过心跳,把资源信息(剩余CPU、内存)传递给ResourceManager。

  • ResourceManager可以根据反馈的心跳决定可以调用的信息维护整个集群的资源状态数据。

    • 客户端提交任务会提交给ResourceManager。

    • ResourceManager向自身申请资源。

    • 申请资源后启动ApplicationMaster。

    • ResourceManager监控所有ApplicationMaster。

  • ApplicationMaster的主要职责:

    • 调度器索要根据客户端的调用启动每个Job的ApplicationMaster服务(启动前会申请资源)

    • 随时监控ApplicationMaster进程状况适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程。

    • 处理任务的失败,重试。

    • 针对不同的任务(Job),会有不同的ApplicationMaster,比如启动MapReduce会执行MRpplicationMaster。

      • 如果存在Hadoop没有实现的ApplicationMaster,我们可以重写他的方法,实现我们自己需要的ApplicationMaster。

Job执行流程图

  1. 客户端提交任务会提交给ResourceManager,ResourceManager向自身申请资源。

  2. 申请资源后把Job信息发送给NodeManager,通知NodeManager调度自己的资源(container)启动ApplicationMaster。

  3. ApplicationMaster会根据Job信息,向ResourceManager申请现阶段要用的资源,比如MapReduce的Mapper阶段是不会申请Reduce阶段的资源的。

    • 申请的资源格式如下

    • Resource Manager会告诉ApplicationMaster允许使用的资源,如果只有1条就先返回1条。

    • 剩余需要的资源会继续请求

  4. ApplicationMaster获取到以后就会先调度这1条资源对应的Node Manager启动任务(Task)

    • Task就是真正的计算任务,比如Mapper。

    • 任务执行过程中,Task会向ApplicationMaster反馈任务进度、成功与否、报错信息。

    • ApplicationMaster根据反馈信息管理Task是终止还是继续进行、重新启动等。

    • Task完成以后ApplicationMaster会对Task做一个标记,执行成功、执行失败。

  5. 所有Task完成后,ApplicationMaster会对Job做一个标记,执行成功、执行失败。

猜你喜欢

转载自www.cnblogs.com/renzhongpei/p/12635241.html