YARN

作者: ZzzZBbbB | 来源:发表于2020-04-16 14:58 被阅读0次

    概述

    为上层应用提供统一的资源管理和作业调度的通用框架

    YARN产生背景

    1.MapReduce1.x的引起的问题

    MapReduce1.x.png

    master/slave: JobTracker&TaskTracker
    一个JobTracker管理多个TaskTracker
    JobTracker:单点、压力大、
    仅支持MapReduce作业,其他诸如Spark等架构无法运行
    2.资源资源率&运维成本

    资源利用.png

    所有的计算框架运行在一个集群中,共享一个集群的资源,做到按需分配。

    YARN框架

    把原有的JobTracker拆成两个两个进程
    资源管理(ResourceManager RM),
    作业调度/监控(per-application ApplicationMaster AM)
    RM 和 per-node slave,NameManger 组成了数据计算框架

    YARN架构.png

    client: 向RM提交,杀死任务
    RM:处理来自client 的请求,启动/监控AM,监控NM
    AM:每个Application对应一个AM, AM向RM申请资源用于NM上启动对应的task,主要就是做数据的切分,为每个task向RM申请资源(container)
    NM:真正工作+ 向RM发送心跳信息,接收来自RM的请求来启动任务,处理来自AM的命令
    container:任务的运行抽象,可以看作是一系列的物理信息 memory,cpu...

    执行流程

    1.Client提交作业到 RM
    2.RM选择一个NM,启动一个container并在其上运行一个AM
    3.AM 向RM上申请资源,随后到对应的NM上启动container,然后在这些container上启动诸如map task或者reduce task即可

    注意:如果作业很小, AM选择在其自己的 JVM 中运行任务

    执行流程.png

    YARN部署

    
    *** 在配置好hadoop的基础上
    
    mapred-site.xml
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
    
    yarn-site.xml 
    <property>
      <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    
    
    启动
    sbin/start-yarn.sh
    jps 发现有RM 和NM 进程则启动成功
    
    关闭
    sbin/stop-yarn.sh
    
    通过访问8088端口可以看到yarn的web界面
    

    提交任务到YARN上

    hadoop jar jar包... # 可以使用hadoop里面的exmaple目录下的jar查看效果

    提交自己开发的MR作业到YARN上运行的步骤:
    1)mvn clean package -DskipTests
    windows/Mac/Linux ==> Maven
    2)把编译出来的jar包(项目根目录/target/...jar)以及测试数据上传到服务器
    scp xxxx hadoop@hostname:directory

    1. 把数据上传到HDFS
      hadoop fs -put xxx hdfspath
    2. 执行作业
      hadoop jar xxx.jar 完整的类名(包名+类名) args.....
    3. 到YARN UI(8088) 上去观察作业的运行情况
      6)到输出目录去查看对应的输出结果

    相关文章

      网友评论

          本文标题:YARN

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