Hadoop YARN 命令大全详解
一、命令概览与分类
1.1 核心命令分类
二、用户命令详解
2.1 应用管理命令
命令 | 参数 | 说明 | 示例 |
---|
yarn application | -list | 列出所有应用 | yarn application -list |
| -status <app_id> | 查看应用状态 | yarn application -status application_1640000000000_0001 |
| -kill <app_id> | 终止应用 | yarn application -kill application_1640000000000_0001 |
| -movetoqueue <app_id> -queue <queue> | 移动应用到新队列 | yarn application -movetoqueue app_001 -queue prod |
yarn jar | <jar_path> [args] | 提交应用 | yarn jar hadoop-examples.jar pi 10 100 |
yarn app | -launch <app_name> <jar_path> | 启动应用 | yarn app -launch WordCount /jobs/wc.jar |
2.2 日志操作命令
命令 | 参数 | 说明 | 示例 |
---|
yarn logs | -applicationId <app_id> | 获取应用日志 | yarn logs -applicationId application_1640000000000_0001 |
| -containerId <container_id> | 获取容器日志 | yarn logs -containerId container_1640000000000_0001_01_000001 |
| -nodeAddress <node:port> | 指定节点日志 | yarn logs -nodeAddress node01:8041 |
| -logFiles <filename> | 指定日志文件 | yarn logs -logFiles syslog |
2.3 节点查看命令
命令 | 参数 | 说明 | 示例 |
---|
yarn node | -list | 列出所有节点 | yarn node -list |
| -status <node_id> | 查看节点状态 | yarn node -status node01:8041 |
| -all | 显示详细信息 | yarn node -list -all |
| -states <states> | 按状态过滤 | yarn node -list -states RUNNING |
2.4 队列操作命令
命令 | 参数 | 说明 | 示例 |
---|
yarn queue | -status <queue> | 查看队列状态 | yarn queue -status root.default |
| -info <queue> | 显示队列详情 | yarn queue -info root.prod |
| -help | 显示帮助信息 | yarn queue -help |
三、管理员命令详解
3.1 资源管理命令
命令 | 参数 | 说明 | 示例 |
---|
yarn rmadmin | -refreshQueues | 刷新队列配置 | yarn rmadmin -refreshQueues |
| -refreshNodes | 刷新节点列表 | yarn rmadmin -refreshNodes |
| -refreshSuperUserGroups | 刷新超级用户组 | yarn rmadmin -refreshSuperUserGroups |
| -transitionToActive <rm_id> | 切换为Active RM | yarn rmadmin -transitionToActive rm1 |
| -getServiceState <rm_id> | 获取RM状态 | yarn rmadmin -getServiceState rm1 |
3.2 节点管理命令
命令 | 参数 | 说明 | 示例 |
---|
yarn nodemanager | -rollLogs | 滚动日志文件 | yarn nodemanager -rollLogs |
| -recover | 恢复节点状态 | yarn nodemanager -recover |
| -refreshUserToGroupsMappings | 刷新用户组映射 | yarn nodemanager -refreshUserToGroupsMappings |
3.3 高级管理命令
yarn resourcemanager -addToClusterNodeLabels "GPU,FPGA"
yarn rmadmin -replaceLabelsOnNode "node01:8041=GPU node02:8041=FPGA"
yarn queue -showacls
四、ApplicationMaster 控制命令
4.1 应用内控制
命令 | 参数 | 说明 | 示例 |
---|
yarn container | -signal <container_id> <signal> | 向容器发送信号 | yarn container -signal container_001 TERM |
| -list <app_attempt_id> | 列出应用容器 | yarn container -list appattempt_1640000000000_0001_000001 |
| -status <container_id> | 查看容器状态 | yarn container -status container_001 |
4.2 AM调试命令
yarn container -signal <am_container_id> OUTPUT_THREAD_DUMP
yarn container -signal <am_container_id> OUTPUT_ENVIRONMENT
yarn container -signal <am_container_id> GRACEFUL_SHUTDOWN
五、实用工具命令
5.1 版本与类路径
命令 | 说明 | 示例 |
---|
yarn version | 显示YARN版本 | yarn version |
yarn classpath | 打印类路径 | yarn classpath |
yarn envvars | 显示环境变量 | yarn envvars |
yarn check | 检查环境配置 | yarn check -native |
5.2 日志管理
yarn logs -aggregate -applicationId app_001
yarn logs -applicationId app_001 -appOwner hadoopadmin
yarn logs -applicationId app_001 > app_logs.txt
六、高级查询命令
6.1 REST API访问
yarn application -status app_001 -appTypes MAPREDUCE -webService https://rm-host:8088
yarn node -all -status -showDetails | jq '.nodes[].nodeHealthStatus'
6.2 历史服务器命令
mapred historyserver
yarn job -list -all
yarn job -status job_1640000000000_0001
七、安全相关命令
7.1 Kerberos集成
kinit -kt /etc/security/keytabs/yarn.service.keytab yarn/node01@EXAMPLE.COM
yarn kerbcheck
yarn rmadmin -refreshKerb
7.2 权限管理
yarn queue -addACL "queue root.prod acl admin:admin"
yarn queue -showACL root.prod
yarn rmadmin -refreshAdminAcls
八、配置管理命令
8.1 动态配置更新
yarn rmadmin -updateSchedulerConfig -file new-scheduler.xml
yarn rmadmin -refreshResourceTypes
yarn daemonlog -getlevel rm-host:8088 org.apache.hadoop.yarn.server.resourcemanager
8.2 配置验证
yarn check -config
yarn node -checkConfiguration node01:8041
九、故障排查命令
9.1 诊断命令
yarn container -signal <container_id> OUTPUT_THREAD_DUMP
yarn node -checkHealth node01:8041
yarn rmadmin -getAllServiceState
9.2 日志分析技巧
yarn logs -applicationId app_001 | grep -A 10 -B 5 "ERROR"
yarn container -status <container_id> | grep "Exit Status"
yarn node -list | awk '{print $1, $6, $7}' | column -t
十、命令使用最佳实践
10.1 常用别名设置
alias yapps="yarn application -list"
alias ykill="yarn application -kill"
alias ynodes="yarn node -list -all"
alias ylogs="yarn logs -applicationId"
alias yqueue="yarn queue -status"
10.2 自动化脚本示例
#!/bin/bash
for app in $(yarn application -list -appStates FAILED | awk 'NR>2 {print $1}')
do
echo "Cleaning $app"
yarn application -kill $app
yarn logs -applicationId $app > /logs/${app}.log
done
10.3 性能监控命令
watch -n 5 "yarn node -list | grep RUNNING | wc -l"
yarn node -list | awk '{print $1, $4, $5, $6}' | sort -k4 -n > cluster_util.txt
yarn queue -info root.prod | grep -E 'Capacity|UsedCapacity'
十一、命令参考速查表
类别 | 常用命令 | 关键参数 |
---|
应用管理 | yarn application | -list , -status , -kill |
日志操作 | yarn logs | -applicationId , -containerId |
节点监控 | yarn node | -list , -status , -states |
队列管理 | yarn queue | -status , -info |
集群管理 | yarn rmadmin | -refreshQueues , -transitionToActive |
容器控制 | yarn container | -signal , -status |
安全管理 | yarn kerbcheck | -refreshKerb |
工具命令 | yarn classpath | -version , -check |
最佳实践提示:
- 生产环境使用
-webService
参数避免直接连接RM - 定期清理历史日志:
yarn logs -cleanup -applicationIdOld 30
- 使用
-appTypes
和 -appStates
过滤应用列表 - 配置命令别名提高运维效率
- 结合
jq
工具解析JSON格式输出