07.YARN

作者: 哈哈大圣 | 来源:发表于2019-11-20 19:45 被阅读0次

YARN

一、YARN概述

1). YARN产生背景

  1. MapReduce1.x ==> MapReduce2.x
    1. master/slave : JobTracker/TaskTracker
    2. JobTracker:单点、压力大
    3. 仅仅只能够支持mapreduce作业

Yarn.png
  1. 资源利用率: 所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配!-> Yarn

2). Yarn介绍

  1. Yarn全称:Yet Another Resource Negotiator
  2. 通用的资源管理系统
  3. 为上层应用系统提供统一的资源管理和调度

yarn_architecture.gif

3). YARN架构

master/slave架构: RM/NM

  1. Client: 向RM提交任务、杀死任务等

  2. ResourceManager:集群中同一时刻对外提供服务的【只有1个】,负责资源相关

    1. 处理来自客户端的请求:提交、杀死
    2. 启动/监控AM
    3. 监控NM
    4. 资源相关
  3. NodeManager: 【多个】

    1. 创建管理容器干活
    2. 向RM发送心跳信息、任务的执行情况
    3. 接收来自RM的请求来启动任务
    4. 处理来自AM的命令
  4. ApplicationMaster:每个应用程序对应一个AM,运行在Container中

    1. AM向RM申请资源用于在NM上启动对应的Task
    2. 数据切分
    3. 为每个task向RM申请资源(container)
    4. NodeManager通信
    5. 任务的监控
  5. container:任务的运行抽象(任务容器,提供memory、cpu....)

    1. task是运行在container里面的
    2. 可以运行AM(ApplicationMaster)、也可以运行map/reduce task

4). YARN执行流程


YARN执行流程.png

二、YARN环境部署

本版本参考网站 YARN环境部署;Ctrl + F搜索:YARN on Single Node;

在此基础上还需要进行配置(学习伪分布式环境),如下:否则会在运行任务的时候后报错!

  1. 配置 $HADOOP_HOME/etc/hadoop/mapred-site.xml:

可以参考对应文件夹下相应的模板文件mapred-site.xml.template,复制重命名为mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
    <!-- 下方配置目前还不知道是解决啥问题的,先放在这里
    -->
    <property>
        <name>mapreduce.admin.map.child.java.opts</name>
        <value>-Xmx1024m</value>
    </property>
    
    <property>
        <name>mapreduce.admin.reduce.child.java.opts</name>
        <value>-Xmx1536m</value>
    </property>
    
</configuration>
  1. 配置 $HADOOP_HOME/etc/hadoop/yarn-site.xml:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
     <!-- 以下配置可以解决错误:与同路径下的hdfs-site.xml中对应<name>属性的配置一致
        org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#4
        Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
        java.io.FileNotFoundException: File does not exist: hdfs://hadoop000:8020/user/hadoop/QuasiMonteCarlo_1574166578901_1182332421/out/reduce-out
     -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/app/tmp</value> 
    </property>
</configuration>
  1. 启动命令
sh $HADOOP_HOME/sbin/start-yarn.sh
  1. 运行jps查看启动的状态,
# 要包含这两个进程说明启动成功
ResourceManager
NodeManager

如果对应进程启动失败,控制台提示的日志查看(注意,控制台的日志说明后缀为.out,实际上只有在.log结尾的日志文件才能查看信息)

  1. 浏览器访问 hadoop000:8088 查看运行状态

默认8088就是访问的Yarn的界面


Yarn的界面.png
  1. Run a MapReduce job or Spark job etc.

  2. 如果需要停止Yarn

sh $HADOOP_HOME/sbin/stop-yarn.sh

三、提交作业到Yarn上运行

1). 案例测试

  1. 切换到$HADOOP_HOME/share/hadoop/mapreduce/目录
  2. 命令的格式
hadoop jar jar包 作业名称 参数
  1. 运行
# 1. 测试pi
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar

# 按照提示选择一个参数
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar pi 2 3

# 在前端网站最下一栏查看任务

# 2. 测试word count: 确保hdfs上存在/introduction.txt,不存在/introduction
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar wordcount /introduction.txt /introduction

2). 提交本地代码到Yarn上运行

提交到Yarn环境的 Job类 中的 Configuration 使用默认即可,不需要额外配置hdfs信息等【等同于在本地运行】

  1. 打包
mvn clean package -DskipTests 

windows/Mac/Linux ==> Maven; 注意使用conf/setting.xml中配置的仓库为hadoop-client对应的的maven;否则可能会尝试重新下载相关jar包依赖

  1. 把编译出来的jar包(项目根目录/target/...jar)以及测试数据上传到服务器

  2. 把数据上传到HDFS

hadoop fs -put xxx hdfspath
  1. 执行作业
hadoop jar xxx.jar 完整的类名(包名+类名) args.....   
  1. 到YARN UI(8088) 上去观察作业的运行情况

  2. 到输出目录去查看对应的输出结果

相关文章

  • 07.YARN

    YARN 一、YARN概述 1). YARN产生背景 MapReduce1.x ==> MapReduce2.xm...

网友评论

      本文标题:07.YARN

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