• yarn工作原理


     基本架构

    概念解析

    1. ResourceManager

        ResourceManager是master上的进程,负责整个分布式系统的资源管理和调度。他会处理来自client端的请求(包括提交作业/杀死作业);启动/监控Application Master;监控NodeManager的情况,比如可能挂掉的NodeManager。

    2. NodeManager

        相对应的,NodeManager时处在slave节点上的进程,他只负责当前slave节点的资源管理和调度,以及task的运行。他会定期向ResourceManager回报资源/Container的情况(heartbeat);接受来自ResourceManager对于Container的启停命令。

    3. Application Master

        每一个提交到集群的作业都会有一个与之对应的Application Master来负责应用程序的管理。他负责进行数据切分;为当前应用程序向ResourceManager去申请资源(也就是Container),并分配给具体的任务;与NodeManager通信,用来启停具体的任务,任务运行在Container中;而任务的监控和容错也是由Application Master来负责的。

    4. Container

        那么container又是什么呢?它包含了Application Master向ResourceManager申请的计算资源,比如说CPU/内存的大小,以及任务运行所需的环境变量和队任务运行情况的描述。

    工作流程:

    (1)Client向ResourceManager提交作业(可以是Spark/Mapreduce作业)

    (2)ResourceManager会为这个作业分配一个container

    (3)ResourceManager与NodeManager通信,要求NodeManger在刚刚分配好的container上启动应用程序的Application Master

    (4)Application Master先去向ResourceManager注册,而后ResourceManager会为各个任务申请资源,并监控运行情况

    (5)Application Master采用轮询(polling)方式向ResourceManager申请并领取资源(通过RPC协议通信)

      (6) Application Manager申请到了资源以后,就和NodeManager通信,要求NodeManager启动任务

          最后,NodeManger启动作业对应的任务。  
      工作机制

    (0)Mr 程序提交到客户端所在的节点。

    (1)Yarnrunner 向 Resourcemanager 申请一个 Application。

    (2)rm 将该应用程序的资源路径返回给 yarnrunner。

    (3)该程序将运行所需资源提交到 HDFS 上。

    (4)程序资源提交完毕后,申请运行 mrAppMaster。

    (5)RM 将用户的请求初始化成一个 task。

    (6)其中一个 NodeManager 领取到 task 任务。

    (7)该 NodeManager 创建容器 Container,并产生 MRAppmaster。

    (8)Container 从 HDFS 上拷贝资源到本地。

    (9)MRAppmaster 向 RM 申请运行 maptask 资源。

    (10)RM 将运行 maptask 任务分配给另外两个 NodeManager,另两个 NodeManager 分

    别领取任务并创建容器。

    (11)MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager

    分别启动 maptask,maptask 对数据分区排序。

    (12)MrAppMaster 等待所有 maptask 运行完毕后,向 RM 申请容器,运行 reduce task。

    (13)reduce task 向 maptask 获取相应分区的数据。

    (14)程序运行完毕后,MR 会向 RM 申请注销自己。

    原文地址:https://www.pianshen.com/article/4753157656/

  • 相关阅读:
    程序为什么加载到内存中
    cortex-A cortex-R cortex-M处理器的性能比较
    makefile 中的赋值方式
    python(老男孩全栈观后感------文件处理)
    python------lambda(匿名函数)
    python------filter(过滤器)
    Express深入解读
    nodejs安装
    一道有意思的题目
    charAt获取数组,测试
  • 原文地址:https://www.cnblogs.com/dongchao3312/p/13949630.html
Copyright © 2020-2023  润新知