EMR入门学习之YARN的基本操作(十五)

  • 2019 年 11 月 22 日
  • 筆記

前言

Apache Hadoop YARN 是开源 Hadoop 分布式处理框架中的资源管理和作业调度技术。作为 Apache Hadoop 的核心组件之一,YARN 负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。

一、YARN CapacityScheduler调度器

简介

CapacityScheduler允许多租户安全地共享大型集群,以便在分配的容量限制下及时为其应用程序分配资源,同时最大化吞吐量和群集的利用率。

操作步骤

可到EMR控制台->左侧的【组件管理】找到yarn进行配置,在yarn的配置文件yarn-site.xml中开启Fair Scheduler。如下图1:

队列基本配置

CapacityScheduler的配置文件位于hadoop目录下的etc/hadoop/capacity-scheduler.xml。CapacityScheduler有一个名为root的预定义队列。系统中的所有队列都是root队列的子节点。

可以通过在yarn.scheduler.capacity.root.queues配置中,使用逗号分隔的子队列列表来设置更多队列。

下面是一个示例,其中包含三个顶级子队列a,b和c以及a和b的一些子队列:

二、yarn的WebUI使用

我们通过EMR控制台,左侧的【组件管理】进入Yarn的Web UI界面:

Application Queues参数说明

  • Queue State:队列状态
  • Used Capacity:该队列已使用的资源占该队列的百分比
  • Absolute Used Capacity:该队列已使用资源占root队列的百分比
  • Absolute Capacity:该队列默认分配的资源占root队列的百分比
  • Absolute Max Capacity:该队列分配的资源最大可占父队列的百分比
  • Used Resource:该队列使用的资源数量
  • Num Schedulable Applications:该队列正在调度的应用数
  • Num Non-Schedulable Applications:该队列没有在调度的应用数
  • Num Containers:该队列已启动的容器数量
  • Max Applications:最大可运行的应用数量(yarn.scheduler.capacity.maximum-applications * Absolute Capacity)
  • Max Applications Per User:单个用户最大可运行的应用数量
  • Max Schedulable Applications:集群最大可调度应用数量,取决于内存总量、应用最小内存分配、AM可用资源占比
  • Max Schedulable Applications Per User:单个用户最大可调度应用数量。(Max Schedulable Applications * 该队列capacity占比 * 单用户可使用队列资源占比)
  • Configured Capacity:该队列默认分配的资源占父队列的百分比
  • Configured Max Capacity:该队列默认最大占父队列资源的百分比
  • Configured Mininum User Limit Percent:单个用户最少可使用队列资源的百分比,最大值与用户数有关
  • Configured User Limit Factor:每个User最多可以使用几个其他队列的资源

三、yarn操作的常用命令

背景

需要查看提交到yarn的应用作业情况

命令介绍

yarn application [options]

参数

说明

-list

打印RM上所有的应用信息。如果需要过滤出某个状态的应用,可以使用-appStates;使用-appTypes则可以过滤某个类型的应用

-appStates  <States>

打印RM上符合states的应用信息。 States 的取值范围为:ALL, NEW, NEW_SAVING, SUBMITTED, ACCEPTED, RUNNING, FINISHED, FAILED, KILLED

-appTypes  <Types>

打印RM上符合Types的应用信息。

-status  <ApplicationId>

查看应用ID对应的应用情况

杀掉某个进程

yarn application -kill <ApplicationId>

说明:<ApplicationId> 可用 -list 查看到,或者登陆YARN快捷访问URL查看。

提交运行YARN应用

提交运行一个YARN的应用jar包。用户可以将写好的YARN代码打包成jar文件,用这个命令去运行它

yarn jar <jar> [mainClass] args...

参数

说明

<jar>

对应的jar包

mainClass

jar包mian函数入口的class类名

args…

运行需要传入的参数

查看应用的日志

命令介绍

yarn logs -applicationId <application ID> [options]

参数

说明

-applicationId  <application ID>

指定应用程序ID,可用 -list 查看到,或者登陆YARN快捷访问URL查看。

-appOwner  <AppOwner>

应用的所有者(如果没有指定就是当前用户)应用程序的ID可以在yarn.resourcemanager.webapp.address配置的路径查看(即:User)

-containerId  <ContainerId>

containerId, 如果指定了containerId,则必须连nodeAddress一起指定

-nodeAddress  <NodeAddress>

节点地址的格式:nodename:port, 如果指定了nodeAddress,则必须连containerId一起指定

查看node信息

命令介绍

yarn node [options]

参数

说明

-all

所有的节点,不管是什么状态的。

-list

列出所有RUNNING状态的节点。支持-states选项过滤指定的状态,节点的状态包 含:NEW,RUNNING,UNHEALTHY,DECOMMISSIONED,LOST,REBOOTED。支持–all显示所有的节点。

-states  <States>

和-list配合使用,用逗号分隔节点状态,只显示这些状态的节点信息。

-status  <NodeId>

打印指定节点的状态。

查看YARN container信息

命令介绍

yarn container [options]

参数

说明

-list  <Application Attempt Id>

应用程序尝试的Containers列表

-status  <ContainerId>

打印Container的状态

查看YARN版本

yarn version