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名称。
命令格式如下:
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之后执行,此文件中的配置优先级最高,可覆盖其他文件中的配置。