Yarn命令


发布于 2024-07-17 / 105 阅读 / 0 评论 /
Yarn是hadoop中重要的资源管理器,本文主要根据官方文档描述yarn命令使用场景

hadoop官方文档可参考https://hadoop.apache.org/docs/

可选择不同版本,当前以3.4.0为准,总结yarn的使用场景

yarn命令行操作官方文档https://hadoop.apache.org/docs/r3.4.0/hadoop-yarn/hadoop-yarn-site/YarnCommands.html

1.application or app

输出任务信息

Usage: yarn application [options] 
Usage: yarn app [options]

options主要有以下几种

(1)-appId <ApplicationId>:指定applicationId

(2)-appStates <States>:可与-list一起使用,通过应用状态进行过滤,状态可选值有ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED,

(3)-appTags <Tags>:可与-list一起使用,通过应用tag进行过滤。

(4)-appTypes <Types>:可与-list一起使用,通过应用类型进行过滤。

(5)-changeQueue <Queue Name>:把当前应用转移到另一个队列,通过-appId选项指定应用ID

(6)-component <Component Name> <Count> :与-flex选项一起使用,用于改变正在运行的应用的containers的数量。支持相对和绝对数量的改变,比如+1、2、-3等。

(7)-components <Components>:和-upgrade选项一起使用,用于出发应用中指定组件的升级。可指定多个组件,用空格进行分隔。

(8)-decommission <Application Name>:停止应用中的某个组件,需要与-instances选项一起使用。

(9)-destroy <Application Name> :销毁已保存的应用,永久清理应用数据。支持与-appTypes选项一起使用。

(10)-enableFastLaunch:上传AM依赖到HDFS上,以便使之后的应用启动更快。支持与-appTypes选项一起使用。

(11)-flex <Application Name or ID>:改变正在运行的应用的containers的数量,需指定-component选项。如果指定的是Name,一定要连带指定appType,除非是默认的yarn-service。如果指定的是ID,appType会自动被检索。支持-appTypes选项指定客户端实现,需确认框架对应的appType提供了正确的客户端实现,用于处理指定的函数。

(12)-help:展示所有的命令行信息。

(13)-instances <Component Instances>:和-upgrade选项一起使用,用于触发指定实例的升级。也可以和-decommission选项一起使用,用于正式停止指定实例。可指定多个实例,通过空格进行分隔。

(14)-kill <Application ID>:直接kill应用,可指定多个应用Id,通过空格进行分隔。

(15)-launch <Application Name> <File Name>:从指定文件拉起应用,可与-updateLifetime、-changeQueue、-appTypes选项一起使用。

(16)-list:列举应用信息,可与-apptypes、-appStatus、-appTags选项进行组合,用于过滤。

(17)-movetoqueue <Application ID>:把当前应用转移到另一个队列,不推荐的操作,使用changeQueue替代。

(18)-queue <Queue Name>:在操作中指定队列名称。

(19)-save <Application Name> <File Name>:把应用保存到指定的文件。

(20)-start <Application Name>:启动之前保存的应用。

(21)-status <ApplicationId or ApplicationName>:输出应用的状态信息。

(22)-stop <Application Name or ID>:优雅停止应用。如果指定的是Name,一定要连带指定appType,除非是默认的yarn-service。如果指定的是ID,appType会自动被检索。支持-appTypes选项指定客户端实现,需确认框架对应的appType提供了正确的客户端实现,用于处理指定的函数。

(23)-updateLifetime <Timeout>:更新应用超时时间,相对时间,从现在开始,秒为单位。

(24)-updatePriority <Priority>:更新应用优先级,需通过appId选项指定应用id

2.applicationattempt

用于尝试运行应用的管理,用法如下:

Usage: yarn applicationattempt [options]

options支持以下3个选项:

(1)-help:打印help信息

(2)-list <ApplicationId>:展示指定应用的attempt信息。

(3)-status <Application Attempt Id>:打印指定attempt的状态信息。

3.classpath

输出hadoop jar和系统库的类路径。如果没有加选项,则输出命令脚本中设置的classpath,可能包含通配符。用法如下:

Usage: yarn classpath [--glob |--jar <path> |-h |--help]

包含三个命令行选项:

(1)--glob:展开通配符代表的所有classpath。

(2)--jar path:把对应的jar path写入到classpath中。

(3)-h, --help:打印help信息。

4.container

输出container信息。命令行如下:

Usage: yarn container [options]

options选项有以下几种:

(1)-help:输出help信息

(2)-list <Application Attempt Id>:列举尝试运行应用的容器。

(3)-status <ContainerId>:输出指定容器的状态。

5.jar

运行一个jar文件,我们一般会把yarn任务代码打包成一个jar文件,并通过此命令运行任务。命令如下:

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

6.logs

输出应用日志信息。命令如下:

Usage: yarn logs -applicationId <application ID> [options]

options有以下用法:

(1)-am <AM Containers>:输出AM container日志。container可通过逗号分隔。

(2)-applicationId <application ID>:指定应用ID

(3)-appOwner <AppOwner>:指定应用所属用户,如果没有指定,则是当前用户。

(4)-containerId <ContainerId>:指定容器ID,一定需要指定。

(5)-client_max_retries <Max Retries>:客户端获取运行中应用日志的最大重试次数

(6)-client_retry_interval_ms <Retry Interval>:重试时间间隔,与-client_max_retries选项一起使用

(7)-clusterId <Cluster ID>:指定集群ID

(8)-help:输出help信息

(9)-list_nodes:展示汇聚日志的节点列表。

(10)-log_files <Log File Name>:指定日志文件名,查看指定日志的内容

(11)-log_files_pattern <Log File Pattern>:通过正则表达式指定日志文件名,获取指定日志的内容。

(12)-nodeAddress <NodeAddress>:指定NodeManager的地址,格式为nodename:port,如果指定了-containerId则此选项也不许指定。

(13)-out <Local Directory>:下载日志到本地目录。

(14)-show_application_log_info:展示containId列表。可以和–nodeAddress选项一起使用,用于获取指定NodeManager上的containerId列表。

(15)-show_container_log_info:展示容器日志原数据信息。

(16)-size <size>:输出日志文件的前size个字节(size为正数),或者后size个字节(size为负数)

(17)-size_limit_mb <Size Limit>:单位是MB,拉取日志的总大小不得超过此选项配置。指定为-1表示无限制。

7.node

输出NodeManager节点信息,命令如下:

Usage: yarn node [options]

options有以下4个选项。

(1)-all:和-list选项一起使用,列举所有的NodeManager节点。

(2)-list:列举所有正在运行的NodeManager,支持-states选项进行过滤,或者-all列觉所有的节点。

(3)-states <States>:和-list选项一起,用于根据状态过滤节点信息,多个状态通过逗号分隔。

(4)-status <NodeId>:输出节点状态报告

输出信息例如下所示:

[root@172 ~]# yarn node -list -all

Total Nodes:2
         Node-Id             Node-State Node-Http-Address       Number-of-Running-Containers
172.10.0.16:5006                RUNNING  172.10.0.16:5009                                  6
172.10.0.94:5006                RUNNING  172.10.0.94:5009                                  2

8.queue

输出队列信息,命令行格式如下:

Usage: yarn queue [options]

options支持以下两个选项。

(1)-help:输出help信息。

(2)-status <QueueName>:输出指定队列的详细信息。

命令输出例如下所示:

[root@172 ~]# yarn queue -status default

Queue Name : default
        State : RUNNING
        Capacity : 90.00%
        Current Capacity : 7.94%
        Maximum Capacity : 100.00%
        Default Node Label expression : <DEFAULT_PARTITION>
        Accessible Node Labels : *
        Preemption : disabled
        Intra-queue Preemption : disabled

9.version

输出hadoop版本信息,命令格式如下:

Usage: yarn version

命令输出例如下所示:

[root@172 ~]# yarn version

Hadoop 3.4.0
Source code repository https://github.com/apache/hadoop -r 2f0dd7c4feb1e482d47786d26d6d32483f39414b
Compiled by root on 2024-04-20T03:21Z
Compiled with protoc 2.5.0
From source with checksum d3403a20def522037d8312174e04db73
This command was run using /usr/local/cdh/hadoop/share/hadoop/common/hadoop-common-3.4.0.jar

10.envvars

输出环境变量信息,命令行格式如下:

Usage: yarn envvars

命令输出例如下所示:

[root@172 ~]# yarn version

JAVA_HOME='/usr/local/jdk'
HADOOP_YARN_HOME='/usr/local/cdh/hadoop'
YARN_DIR='share/hadoop/yarn'
YARN_LIB_JARS_DIR='share/hadoop/yarn/lib'
HADOOP_CONF_DIR='/etc/hadoop'
HADOOP_TOOLS_HOME='/usr/local/cdh/hadoop'
HADOOP_TOOLS_DIR='share/hadoop/tools'
HADOOP_TOOLS_LIB_JARS_DIR='share/hadoop/tools/lib'

11.daemonlog

运行时动态设置某个logger的日志级别,通过类的全限定名来指定logger名称。

详细命令介绍可参考https://hadoop.apache.org/docs/r3.4.0/hadoop-project-dist/hadoop-common/CommandsManual.html#daemonlog

命令格式如下:

hadoop daemonlog -getlevel <host:port> <classname> [-protocol (http|https)]

hadoop daemonlog -setlevel <host:port> <classname> <level> [-protocol (http|https)]

12.nodemanager

用于启动NodeManager,命令格式如下

Usage: yarn nodemanager

13.proxyserver

用于启动ProxyServer,命令格式如下

Usage: yarn proxyserver

14.resourcemanager

启动ResourceManager,命令格式如下

Usage: yarn resourcemanager [options]

options有以下四个场景

(1)-format-state-store:格式化RMStateStore。这个选项会清理RMStateStore,如果之前的应用信息不再需要,则此选项是非常合适的。只能在ResourceManager已停止的情况下运行。

(2)-remove-application-from-state-store <appId>:将appId对应的应用信息从RMStateStore移除。只能在ResourceManager已停止的情况下运行。

(3)-format-conf-store:格式化YarnConfigurationStore。这个选项会清理YarnConfigurationStore中已持久化的scheduler配置。只能在ResourceManager已停止的情况下运行。

(4)-convert-fs-configuration [-y|yarnsiteconfig] [-f|fsconfig] [-r|rulesconfig] [-o|output-directory] [-p|print] [-c|cluster-resource]

注意,这个选项当前仅处于实验状态,不能用于生产环境,还正在开发当中。

将制定的公平调度配置转换为容量调度配置。需要两个输入文件,一个是yarn-site.xml,格式为[-y|yarnsiteconfig [<Path to the yarn-site.xml file>],另一个是fair-scheduler.xml,格式为[-f|fsconfig [<Path to the fair-scheduler.xml file>]。如果yarn-site.xml中配置了yarn.scheduler.fair.allocation.file参数,则命令中无需额外指定fair-scheduler.xml。如果两个都配置了,-f选项的优先级更高。输出配置文件的目录通过[-o|output-directory\ <directory>]来配置,输出文件为yarn-site.xml和capacity-scheduler.xml。可选的规则配置文件通过[-r|rulesconfig <Path to the conversion rules file>]来配置,规则配置文件是个properties文件。可以通过[-p|print]选项将生成的配置输出到终端。如果某一队列有最大资源限制(百分比),需要添加[-c|cluster-resource] <resource>]选项。资源的格式和fair-scheduler.xml保持一致。

15.rmadmin

运行ResourceManager管理客户端,用于对Yarn集群管理任务。命令格式如下

yarn rmadmin [options]

options有以下选项。

(1)-refreshQueues

重新加载队列的权限、状态、调度相关的属性。ResourceManager将会重新加载mapred-queues配置文件。

(2)-refreshNodes [-g|graceful [timeout in seconds] -client|server]

刷新ResourceManager中host的信息。如果我们设置了timeout,ResourceManager等待超过此时间,将会把NodeManager置为不可用。-client|server选项指定是由client还是ResourceManager来进行超时处理,如果server端跟踪没有设置,那么client端跟踪是阻塞式的。此场景触发了超时,timeout为-1意味着无限的等待。有名的issue是:服务端跟踪会被废除,假如RM HA故障转移发生。

(3)-refreshNodesResources

在ResourceManager端刷新NodeManagers的资源。

(4)-refreshSuperUserGroupsConfiguration

刷新超级用户的proxy groups mappings。

(5)-refreshUserToGroupsMappings

刷新user-to-groups mappings。

(6)-refreshAdminAcls

刷新ResourceManager的管理权限。

(7)-refreshServiceAcl

重新加载服务级的授权策略文件,ResourceManager将重新加载authorization policy文件。

(8)-getGroups [username]

获取指定用户的组信息。

(9)-addToClusterNodeLabels <“label1(exclusive=true),label2(exclusive=false),label3”>

增加集群节点标签,exclusive默认为true。

(10)-removeFromClusterNodeLabels <label1,label2,label3>

删除集群节点标签,多个标签通过逗号分隔。

(11)-replaceLabelsOnNode <“node1[:port]=label1 node2[:port]=label2”> [-failOnUnknownNodes]

替换节点的标签(需要注意的是,目前不支持一个host配置多个标签),-failOnUnknownNodes选项是可选的,当我们设置了这个选项,指定错误的节点会导致命令执行失败。

(12)-directlyAccessNodeLabelStore

目前不推荐使用,未来版本删除。直接访问节点标签仓库,有了这个选项,所有节点标签相关的操作不会链接到RM。反而会直接修改仓库中的节点标签。默认情况下为false,表示通过RM来实现。需要注意的是,如果在yarn.node-labels.fs-store.root-dir属性中配置了本地目录(不是NFS或HDFS),这个操作只会在RM节点的服务器中运行才有效。

(13)-refreshClusterMaxPriority

刷新集群最高优先级。

(14)-updateNodeResource [NodeID] [MemSize] [vCores] ([OvercommitTimeout])

更新指定节点的资源。

(15)-updateNodeResource [NodeID] [ResourceTypes] ([OvercommitTimeout])

更新指定节点的资源类型,资源类型是逗号分隔的,例如memory-mb=1024Mi,vcores=1,resource1=2G,resource2=4m

(16)-transitionToActive [–forceactive] [–forcemanual] <serviceId>

将服务切换为active状态。如果设置了–forceactive选项,命令尝试将指定的service置为active,而不检查这个service是否处于active。如果自动故障转移开启,则此命令不能被使用,除非设置了–forcemanual选项。

(17)-transitionToStandby [–forcemanual] <serviceId>

将服务切换为standby状态,如果自动故障转移开启则此命令无法使用。我们可以添加–forcemanual选项强制执行。

(18)-getServiceState <serviceId>

返回指定服务的状态信息

(19)-getAllServiceState

返回所有服务的状态信息。

(20)-checkHealth <serviceId>

请求服务是否执行健康检查,如果检查失败,RMAdmin工具会返回非零返回码。

(21)-help [cmd]

展示给定命令的help信息。

schedulerconf

更新scheduler配置,需要注意的是,这是个未发布的特性。命令格式如下

Usage: yarn schedulerconf [options]

options支持以下选项:

-add <“queuePath1:key1=val1,key2=val2;queuePath2:key3=val3”>:队列之间通过分号分隔,后面跟着队列配置的kv键值对。

-remove <“queuePath1;queuePath2”>:移除队列,多个队列通过分号分隔。需要注意的是:只有处于STOPPED状态的队列才能被删除。

-update <“queuePath1:key1=val1,key2=val2;queuePath2:key3=val3”>:更新队列配置,队列之间通过分号分隔。

-global <key1=val1,key2=val2>:更新scheduler全局配置。

16.scmadmin

运行共享缓存管理器管理客户端,命令格式如下

Usage: yarn scmadmin [options]

options支持以下选项

(1)-help:输出help信息。

(2)-runCleanerTask:运行缓存清理任务。

17.sharedcachemanager

启动共享缓存管理器,命令格式如下

Usage: yarn sharedcachemanager

18.timelineserver

启动TimeLineServer,命令格式如下

Usage: yarn timelineserver

19.registrydns

启动RegistryDNS服务,命令格式如下

Usage: yarn registrydns

20.Yarn环境变量相关的配置文件

主要有以下四种配置文件。

(1)etc/hadoop/hadoop-env.sh

存储hadoop命令的全局配置

(2)etc/hadoop/yarn-env.sh

存储yarn命令的配置

(3)etc/hadoop/hadoop-user-functions.sh

允许某些高级用户重写某些shell方法

(4)~/.hadooprc

保存用户的环境变量信息,在hadoop-env.sh、hadoop-user-functions.sh、yarn-env.sh之后执行,此文件中的配置优先级最高,可覆盖其他文件中的配置。