YARN

概述

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

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

        mapreduce.framework.name
        yarn


yarn-site.xml 

  yarn.nodemanager.aux-services
    mapreduce_shuffle




启动
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)