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

16. Yarn资源调度器

16.5 Yarn常用命令

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

  • [summer@hadoop102 ~]$ myhadoop.sh start
    在这里插入图片描述这个是之前写的脚本,想了解的可用看我之前写的文章
    https://blog.csdn.net/Redamancy06/article/details/126234179

  • [summer@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /testinput /testoutput/output1
    在这里插入图片描述

在这里插入图片描述

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 logs命令获取运行日志的问题。首先,我得仔细看看用户提供的引用内容,里面有四个引用资料,可能包含相关的命令和步骤。 首先,用户的问题是关于如何用yarn logs命令来获取运行时的日志。根据引用中的信息,比如引用[1]和引用[2]都提到了使用yarn logs -applicationId <ApplicationId>来查看特定应用程序的日志。例如,用户提到使用yarn logs -applicationId application_1573014293542_24188。这说明基本命令结构是yarn logs加上-applicationId参数和具体的应用程序ID。 接下来,用户可能想知道如何找到这个Application ID。引用[2]中提到可以用yarn application -list来查看当前或历史的应用程序列表,这样就能获取到对应的ID。这应该是第一步,用户需要先列出应用程序,找到他们需要检查的那个ID。 然后,用户可能遇到日志无法导出的问题。比如引用[3]提到执行yarn logs命令后无法导出map日志,可能需要检查日志是否已经上传到HDFS。根据引用[4],Hadoop的配置参数yarn.nodemanager.remote-app-log-dir决定了日志存储的位置,所以用户需要确认这个配置是否正确,确保日志被正确上传。此外,引用[3]还提到将日志重定向到文件,如yarn logs -applicationId app_id > app.log,这也是一个有用的步骤。 另外,引用[2]中提到如果应用程序已经完成,可能无法再次被kill,但查看日志应该还是可以的。不过,如果日志没有正确上传,用户可能会遇到问题。这时候需要检查NodeManager的配置,确保日志目录设置正确,并且有足够的权限访问这些日志。 总结下来,步骤应该是: 1. 使用yarn application命令查找Application ID。 2. 使用yarn logs -applicationId来获取日志。 3. 如果日志无法获取,检查HDFS配置和日志目录。 4. 将日志输出到文件方便查看。 另外,用户可能需要知道如何查看实时日志,但yarn logs通常用于已完成的应用程序。对于运行中的应用,可能需要结合其他命令或直接查看HDFS中的日志文件。同时,权限问题也可能影响日志访问,需要确保用户有权限执行这些命令和访问HDFS路径。 最后,我需要整理这些步骤,用清晰的中文回答,并附上相关引用,确保用户能一步步操作。同时生成相关问题,帮助用户进一步理解可能遇到的问题,比如权限问题、配置调整或实时日志查看等。</think>### 如何使用 Yarn logs 命令获取运行日志? #### 步骤说明 1. **查找目标应用的 Application ID** - 使用 `yarn application` 命令列出当前或历史运行任务: ```bash yarn application -list ``` 这会显示所有 Yarn 应用的列表,包含 `Application ID`、状态、用户等信息[^2]。 2. **查看指定应用的日志** 通过 `yarn logs -applicationId` 命令获取完整日志: ```bash yarn logs -applicationId <ApplicationId> # 示例(替换为实际ID): yarn logs -applicationId application_1665325770064_0003 ``` 日志会直接输出到终端,包含该应用的 MapReduce 任务、Container 运行状态等信息[^1]。 3. **将日志保存到文件** 若需持久化分析,可将日志重定向到文件: ```bash yarn logs -applicationId <ApplicationId> > /path/to/logfile.log ``` 例如: ```bash yarn logs -applicationId application_1665325770064_0003 > ~/app.log ``` [^3] 4. **处理日志未上传的情况** - 若日志无法导出,需确认 Yarn 配置 `yarn.nodemanager.remote-app-log-dir` 是否正确指向 HDFS 目录。 - 检查 HDFS 中是否存在对应日志路径: ```bash hdfs dfs -ls <配置的日志目录>/<ApplicationId> ``` 此目录默认可能为 `/tmp/logs`[^4]。 #### 注意事项 - **已完成的任务**:若任务已结束,仍可通过上述命令获取日志,但无法通过 `yarn application -kill` 终止。 - **权限问题**:确保执行命令的用户有权限访问目标应用的日志(如与任务提交用户一致)。 ---
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Redamancy_06

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

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

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

打赏作者

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

抵扣说明:

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

余额充值