HadoopYarn常用命令、yarn application查看任务、yarn logs查看日志、yarn applicationattempt查看尝试运行的任务、查看容器、Yarn生产环境核心参数

本文介绍Yarn资源调度器的常用命令,包括查看任务状态、应用日志、容器及节点状态等,帮助用户更好地管理和监控Yarn集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

16. Yarn资源调度器

16.5 Yarn常用命令

Yarn状态的查询,除了可以在hadoop103:8088页面查看外,还可以通过命令操作。常见的命令操作如下所示:
需求:执行WordCount案例,并用Yarn命令查看任务运行情况。

在这里插入图片描述

16.5.1 yarn application查看任务

16.5.1.1 列出所有Application:
[summer@hadoop102 hadoop-3.1.3]$ yarn application -list
2022-10-10 16:57:24,620 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):0
                Application-Id	    Application-Name	    Application-Type	      User	     Queue	             State	       Final-State	       Progress	                       Tracking-URL

在这里插入图片描述这里因为任务已经执行结束了,所以没有显示出来。

16.5.1.2 根据Application状态过滤:yarn application -list -appStates (所有状态:ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)
[summer@hadoop102 hadoop-3.1.3]$ yarn application -list -appStates FINISHED
2022-10-10 17:03:48,178 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total number of applications (application-types: [], states: [FINISHED] and tags: []):1
                Application-Id	    Application-Name	    Application-Type	      User	     Queue	             State	       Final-State	       Progress	                       Tracking-URL
application_1665325770064_0003	          word count	           MAPREDUCE	    summer	   default	          FINISHED	         SUCCEEDED	           100%	http://hadoop102:19888/jobhistory/job/job_1665325770064_0003

在这里插入图片描述这里的任务application_1665325770064_0003就是刚刚我们执行的任务

16.5.1.3 Kill掉Application:
[summer@hadoop102 hadoop-3.1.3]$ yarn application -kill application_1665325770064_0003
2022-10-10 17:05:56,667 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Application application_1665325770064_0003 has already finished 

在这里插入图片描述因为application_1665325770064_0003这个任务已经完成了,所以不能再次被kill了

16.5.2 yarn logs查看日志

16.5.2.1 查询Application日志:
yarn logs -applicationId <ApplicationId>
[summer@hadoop102 hadoop-3.1.3]$ yarn logs -applicationId application_1665325770064_0003

在这里插入图片描述

16.5.2.2 查询Container日志:
yarn logs -applicationId <ApplicationId> -containerId <ContainerId> 
[summer@hadoop102 hadoop-3.1.3]$ yarn logs -applicationId application_1665325770064_0003 -containerId container_1665325770064_0003_01_000001

在这里插入图片描述

containerId从16.5.3.1里获取

16.5.3 yarn applicationattempt查看尝试运行的任务

16.5.3.1 列出所有Application尝试的列表:
yarn applicationattempt -list <ApplicationId>
[summer@hadoop102 hadoop-3.1.3]$ yarn applicationattempt -list application_1665325770064_0003
2022-10-10 20:01:36,619 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total number of application attempts :1
         ApplicationAttempt-Id	               State	                    AM-Container-Id	                       Tracking-URL
appattempt_1665325770064_0003_000001	            FINISHED	container_1665325770064_0003_01_000001	http://hadoop103:8088/proxy/application_1665325770064_0003/

在这里插入图片描述

16.5.3.2 打印ApplicationAttemp状态:
yarn applicationattempt -status <ApplicationAttemptId>
[summer@hadoop102 hadoop-3.1.3]$ yarn applicationattempt -status appattempt_1665325770064_0003_000001
2022-10-10 20:11:35,446 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Application Attempt Report : 
	ApplicationAttempt-Id : appattempt_1665325770064_0003_000001
	State : FINISHED
	AMContainer : container_1665325770064_0003_01_000001
	Tracking-URL : http://hadoop103:8088/proxy/application_1665325770064_0003/
	RPC Port : 42572
	AM Host : hadoop103
	Diagnostics : 

在这里插入图片描述

ApplicationAttemptId从16.5.3.1里获取

16.5.4 yarn container查看容器

16.5.4.1 列出所有Application 尝试的列表
yarn container -list <ApplicationAttemptId>
[summer@hadoop102 hadoop-3.1.3]$ yarn container -list appattempt_1665325770064_0003_000001
2022-10-10 20:15:25,743 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total number of containers :0
                  Container-Id	          Start Time	         Finish Time	               State	                Host	   Node Http Address	                            LOG-URL

在这里插入图片描述
只有在任务跑的途中才能看到 container 的状态,因为这个任务运行完之后,container容器会立即释放,我这里就没有container容器,因为任务已经运行结束了

[summer@hadoop102 hadoop-3.1.3]$ yarn applicationattempt -list application_1665325770064_0010
2022-10-10 20:25:08,250 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total number of application attempts :1
         ApplicationAttempt-Id	               State	                    AM-Container-Id	                       Tracking-URL
appattempt_1665325770064_0010_000001	             RUNNING	container_1665325770064_0010_01_000001	http://hadoop103:8088/proxy/application_1665325770064_0010/

在这里插入图片描述这个靠手速弄出来一个结果,这个就是有容器的时候里面显示的内容

16.5.4.2 打印Container状态:
yarn container -status <ContainerId>

[summer@hadoop102 hadoop-3.1.3]$ yarn container -status container_1665325770064_0003_01_000001
2022-10-10 20:20:13,494 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Container with id ‘container_1665325770064_0003_01_000001’ doesn’t exist in RM or Timeline Server.

在这里插入图片描述注:只有在任务跑的途中才能看到 container 的状态

[summer@hadoop102 hadoop-3.1.3]$ yarn container -status container_1665325770064_0010_01_000001
2022-10-10 20:25:14,642 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Container Report : 
	Container-Id : container_1665325770064_0010_01_000001
	Start-Time : 1665404700780
	Finish-Time : 0
	State : RUNNING
	Execution-Type : GUARANTEED
	LOG-URL : http://hadoop104:8042/node/containerlogs/container_1665325770064_0010_01_000001/summer
	Host : hadoop104:36495
	NodeHttpAddress : http://hadoop104:8042
	Diagnostics : null

在这里插入图片描述这个靠手速弄了一个任务在运行中的显示结果

16.5.5 yarn node查看节点状态

列出所有节点:yarn node -list -all

[summer@hadoop102 hadoop-3.1.3]$ yarn node -list -all
2022-10-10 20:33:40,711 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Total Nodes:3
         Node-Id	     Node-State	Node-Http-Address	Number-of-Running-Containers
 hadoop104:36495	        RUNNING	   hadoop104:8042	                           0
 hadoop103:38375	        RUNNING	   hadoop103:8042	                           0
 hadoop102:40891	        RUNNING	   hadoop102:8042	                           0

在这里插入图片描述

16.5.6 yarn rmadmin更新配置

加载队列配置:yarn rmadmin -refreshQueues

[summer@hadoop102 hadoop-3.1.3]$ yarn rmadmin -refreshQueues
2022-10-10 20:39:09,817 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8033

在这里插入图片描述

16.5.7 yarn queue查看队列

打印队列信息:yarn queue -status

[summer@hadoop102 hadoop-3.1.3]$ yarn queue -status default
2022-10-10 20:43:10,934 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.159.103:8032
Queue Information : 
Queue Name : default
	State : RUNNING
	Capacity : 100.0%
	Current Capacity : .0%
	Maximum Capacity : 100.0%
	Default Node Label expression : <DEFAULT_PARTITION>
	Accessible Node Labels : *
	Preemption : disabled
	Intra-queue Preemption : disabled

在这里插入图片描述
在这里插入图片描述
这里的值更详细

16.6 Yarn生产环境核心参数

在这里插入图片描述

<think>好的,用户现在问的是如何查看YARN日志。之前他们遇到了Hive执行MapReduce任务返回错误码2的问题,我之前已经给出了一些排查步骤,其中包括查看YARN日志。现在用户可能按照之前的指导,想更详细地了解如何具体操作查看这些日志,所以需要详细解答。 首先,我需要确定用户的使用场景。他们可能是在处理Hive任务时遇到了问题,需要查看YARN日志来诊断错误原因。用户可能是数据分析师或者开发人员,对Hadoop生态有一定了解,但可能不熟悉具体的日志查看命令和步骤。 接下来,用户的真实需求是获取查看YARN日志的方法。他们可能需要具体的命令示例和步骤,包括如何找到Application ID,如何通过命令行或Web UI查看日志,以及如何处理常见问题比如日志被清理的情况。此外,用户可能还希望了解如何调整日志级别或配置日志聚合,以便未来更方便地排查问题。 需要考虑到用户可能对YARN的架构不太熟悉,所以解释的时候要简明扼要。例如,Application Master和NodeManager的区别,以及日志聚合的作用。同时,提供不同的方法,比如命令行和Web界面,满足不同用户的操作习惯。 还要注意用户可能遇到的权限问题,比如是否有权限访问YARN的Web界面或执行yarn logs命令。此外,如果日志已经被聚合到HDFS,可能需要指导用户如何从HDFS中提取日志文件。对于日志被清理的情况,给出解决方案,比如调整保留时间或手动触发聚合。 另外,用户可能不知道如何调整日志级别,这时候需要给出具体的配置参数和示例,帮助他们启用调试日志,以便更详细地排查问题。 最后,总结关键点,确保用户能够抓住重点,按照步骤操作。同时提醒常见问题,帮助他们避免常见陷阱,比如权限不足或日志未聚合的情况。</think>--- ### 一、核心操作流程 #### 1. 获取YARN Application ID - **从Hive日志中提取** 在Hive客户端执行查询后,错误日志会直接显示`Application ID`,格式为: `application_<timestamp>_<序列号>` ```bash # 在Hive日志中搜索(默认路径:/tmp/${username}/hive.log) grep "Application ID" /tmp/your_username/hive.log ``` - **通过YARN Web UI查看** 访问YARN ResourceManager Web界面(默认端口:8088): `http://<resourcemanager-host>:8088/cluster/apps` 按时间排序找到对应的任务。 #### 2. 查看日志的三种方法 ##### 方法1:命令行直接查看 ```bash # 标准查询(需开启日志聚合功能) yarn logs -applicationId application_XXXX_XX # 强制查看未聚合的日志(需SSH到对应节点) yarn logs -applicationId application_XXXX_XX -am ALL -log_files stdout ``` ##### 方法2:通过HDFS查看聚合日志 ```bash # 定位HDFS聚合日志路径(需先启用日志聚合) hdfs dfs -ls /tmp/logs/<user>/logs/application_XXXX_XX # 下载全部日志到本地 hdfs dfs -get /tmp/logs/<user>/logs/application_XXXX_XX /local/path ``` ##### 方法3:Web界面查看 1. 访问YARN ResourceManager Web UI:`http://<rm-host>:8088` 2. 找到对应Application ID,点击`Logs`按钮 3. 直接查看`stdout/stderr`或下载完整日志包 --- ### 二、关键配置验证 #### 1. 确认日志聚合已启用 检查`yarn-site.xml`配置: ```xml <property> <name>yarn.log-aggregation-enable</name> <value>true</value> <!-- 必须为true --> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/tmp/logs</value> <!-- 聚合日志存储路径 --> </property> ``` #### 2. 日志保留时间设置 ```xml <!-- 在yarn-site.xml中定义保留时长(默认7天) --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> ``` --- ### 三、典型问题解决方案 #### 场景1:`Log aggregation has not completed` ```log ERROR: Log aggregation has not completed or is not enabled. ``` - **原因**:日志尚未完成聚合(任务结束到聚合完成有延迟) - **解决**: ```bash # 等待1-5分钟后重试 yarn logs -applicationId application_XXXX_XX # 或直接访问对应NodeManager节点日志 ssh nodemanager-host cat /var/log/hadoop-yarn/containers/application_XXXX_XX/*/stdout ``` #### 场景2:`No logs available` ```log ERROR: The logs are not available for application_XXXX_XX ``` - **原因**:日志已被清理或未启用聚合 - **解决**: ```bash # 检查HDFS聚合目录是否存在 hdfs dfs -ls /tmp/logs/<user>/logs/application_XXXX_XX # 如果目录不存在,手动触发日志转储(需管理员权限) yarn rmadmin -refreshNodes ``` --- ### 四、调试技巧 #### 1. 重点查看位置 | 日志文件 | 关键信息定位 | |----------------|----------------------------------| | **stdout** | MapReduce计数器、任务进度 | | **stderr** | Java堆栈跟踪、系统错误代码 | | **syslog** | 容器启动失败原因、资源分配问题 | #### 2. 过滤关键错误 ```bash # 查找OOM错误 yarn logs -applicationId app_XXXX | grep -i "outofmemory" # 查找容器退出码 yarn logs -applicationId app_XXXX | grep "Exit code" ``` --- ### 五、日志分析示例 ```log Container: container_XXXX_01_000002 on nodehost_123 LogType:stderr LogLength:1582 Log Contents: Error: Java heap space Dump of the process-state... ``` - **诊断**:Map/Reduce任务内存不足 - **解决**:调整内存配置 ```sql SET mapreduce.map.memory.mb=4096; SET mapreduce.reduce.memory.mb=8192; ``` --- 通过以上方法,可以快速定位YARN任务失败的根本原因。建议优先使用`yarn logs`命令配合Web UI交叉验证,同时注意检查日志聚合功能是否正常启用。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redamancy_06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值