Hadoop YARN(Yet Another Resource Negotiator)是Hadoop集群的资源管理和作业调度框架,它将资源管理和作业调度功能分离,通过ResourceManager(全局资源管理者)和NodeManager(单节点资源管理者)协同工作,实现了集群资源的动态分配和作业的高效执行,掌握YARN命令是管理和调试Hadoop集群的基础,以下从集群状态监控、作业提交与管理、资源管理等方面详细介绍常用命令。

集群状态监控命令
-
yarn node -list
用于查看集群中所有NodeManager的状态及资源信息,命令格式为yarn node -list -all
,输出包括NodeManager的ID、状态(如RUNNING、UNHEALTHY)、可用vCores、内存容量及已用资源等,通过该命令可快速定位异常节点或资源瓶颈节点。 -
yarn application -list
列出当前集群中所有作业的状态,常用参数包括-appStates
(过滤作业状态,如RUNNING、FAILED、COMPLETED)和-queue
(按队列过滤)。yarn application -list -appStates RUNNING
可查看正在运行的作业。 -
yarn application -status
查看指定作业的详细信息,包括作业状态、进度、运行时间、资源申请量、队列名称等。yarn application -status application_1630000000000_001
可获取ID为application_1630000000000_001
的作业详情。 -
yarn cluster -status
查看集群整体资源状态,包括总vCores、总内存、已用资源、可用资源及活跃NodeManager数量等,帮助管理员掌握集群资源利用率。(图片来源网络,侵删)
作业提交与管理命令
-
yarn jar -submit
提交MapReduce或Spark作业到集群,基本格式为yarn jar <jar_path> <main_class> [args]
,例如yarn jar wordcount.jar WordCount /input /output
,可通过-D
参数配置作业属性,如-Dmapreduce.job.queuename=production
指定作业队列。 -
yarn application -kill
终止指定作业。yarn application -kill application_1630000000000_001
会立即终止该作业并释放占用的资源。 -
yarn application -failover
对失败的作业进行故障转移,尝试重新调度,适用于因ResourceManager故障导致的作业卡死情况。 -
yarn logs -get
获取指定作业的日志,默认下载到本地当前目录,可通过-destination
指定路径,例如yarn logs -get application_1630000000000_001 -dest /tmp/logs
。
资源与队列管理命令
-
yarn queue -status
查看指定队列的资源使用情况,包括队列容量、当前已用资源、最大资源限制及作业数量等,需启用Resource Scheduler(如Capacity Scheduler)才能使用。 -
yarn rmadmin -updateQueue
动态更新队列配置,如修改队列容量或资源限制。yarn rmadmin -updateQueue "capacity=50;maxCapacity=70" production
将production
队列的容量调整为50%,最大容量为70%。
常用命令参数总结
命令类型 | 常用命令示例 | 核心功能说明 |
---|---|---|
集群状态监控 | yarn node -list -all |
列出所有NodeManager状态及资源信息 |
yarn cluster -status |
查看集群整体资源使用情况 | |
作业管理 | yarn application -list -appStates RUNNING |
列出指定状态的作业 |
yarn application -kill <application_id> |
终止指定作业 | |
作业提交 | yarn jar wordcount.jar WordCount /input /output |
提交MapReduce作业 |
日志获取 | yarn logs -get <application_id> -dest /tmp |
下载作业日志到指定路径 |
队列管理 | yarn queue -status production |
查看production 队列的资源使用情况 |
相关问答FAQs
Q1: 如何查看YARN作业的详细运行日志?
A1: 可通过两种方式获取:
- 使用
yarn logs -get <application_id>
命令下载日志到本地,日志会按NodeManager和Container目录结构组织。 - 登录YARN Web UI(通常为http://
8088),在指定作业的“Logs”页面可直接查看各Container的实时日志,适合调试时快速定位错误。
Q2: YARN作业提交失败后,如何排查原因?
A2: 排查步骤如下:
- 检查作业提交命令中的JAR包路径、主类名及输入输出路径是否正确。
- 使用
yarn application -status <application_id>
查看作业失败状态(如FAILED/KILLED),并检查错误信息中的具体原因(如权限不足、内存溢出等)。 - 通过
yarn logs -get <application_id>
下载日志,重点查看stderr中的异常堆栈信息,或使用Web UI的“Diagnostics”标签页获取详细诊断报告。 - 检查集群资源是否充足,可通过
yarn cluster -status
确认可用vCores和内存是否满足作业需求。