YARN学习笔记

作者: 9c0ddf06559c | 来源:发表于2017-12-04 23:03 被阅读59次

    YARN产生背景

    Hadoop1.x时:

    • MapReduce: Master/Slave架构,1个JobTracker带多个TaskTracker

    JobTracker:

    负责资源管理和作业调度

    TaskTracker:

    • 定期向JT汇报本节点的健康状况、资源使用情况、作业执行情况;
    • 接收来自JT的命令: 启动任务/杀死任务

    YARN:

    不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度

    XXX ON YARN的好处:

    与其他计算机框架共享集群资源,按资源需要分配,进而提高集群资源的利用率

    XXX: Spark/Storm/Flink


    image.png image.png

    YARN 架构

    1. ResourceManager: RM
    • 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度
    • 提交一个作业、杀死一个作业
    • 处理客户端的请求:
    • 监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
    1. NodeManager: NM
    • 整个集群中有多个,负责自己本身节点资源管理和使用
    • 定时向RM汇报本节点的资源使用情况
    • 接收并处理来自RM的各种命令: 启动Container
    • 处理来自AM的命令
    • 单个节点的资源管理
    1. ApplicationMaster: AM
    • 每个应用程序对应一个: MR、Spark,负责应用程序的管理
    • 为应用程序向RM申请资源(core、memory),分配给内部task
    • 需要与NM通信: 启动/停止task,task是运行在container里面,AM也是运行在containe
    1. Container
    • 封装了CPU、Memory等资源的一个容器
    • 是一个任务运行环境的抽象
    1. Client
    • 提交作业
    • 查询作业的运行进度
    • 杀死作业


      image.png

    YARN 执行流程

    image.png
    1. 用户向YARN提交一个作业(例如Spark/Storm作业)
    2. ResourceManager会给作业分配第一个Continer,假设运行在图中第二个NodeManager
    3. ResourceManager与对应NodeManager进行通信,要求启动对应的Continer用来启动应用程序,ApplicationMaster
    4. ApplicationMaster启动后,与ResourceManager进行注册
    5. ApplicationMaster向ResourceManager申请Core,Memory,然后在对应的NodeManager上开始启动任务
    6. 在每个NodeManager上启动相应的continer,并把task运行在Continer

    YARN 环境搭建

    1.etc/hadoop/mapred-site.xml:

    <property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
    </property>
    

    2.etc/hadoop/yarn-site.xml:

         <property>
               <name>yarn.nodemanager.aux-services</name>       
              <value>mapreduce_shuffle</value> 
        </property>
    

    3.启动YARN相关的进程

    sbin/start-yarn.sh

    4.验证

    jps

    http://host:8088

    相关文章

      网友评论

        本文标题:YARN学习笔记

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