spark on yarn运行日志查看

本文介绍了如何在WebUI、服务器本地查看Spark on YARN的日志信息,包括YARN cluster和client模式的区别,并提供了shell脚本提交Spark程序时生成运行日志文件的方法。

1. 在webUI界面直接查看日志信息

进入8088端口可以查看日志信息,如下图:
在这里插入图片描述

2. 在服务器本地查看

根据applicationID在本地直接查看

yarn logs -applicationId appID
#appID是实际的spark任务的id

3. yarn on cluster 和 yarn on client日志信息的差别

  1. yarn on cluster
    此模式下任务会提交到yarn,yarn会在集群中随机指定一个节点启动driver,执行日志只能在webUI界面查看。任务提交之后就跟提交程序的客户端无关了,该客户端关停了也不影响程序的执行。一般生产用此模式。
  2. yarn on client
    此模式会在本地客户端启动一个driver,所以运行的日志信息和println的数据会显示在提交程序的客户端。所以此时该客户端的关停会直接影响程序,一般自己测试可以用此模式。

4. shell脚本提交spark程序,生成spark运行日志文件

生产环境下,spark submit命令经常会放在shell中去调起执行,这种情况下要怎样才能在shell中生成spark日志信息,写到具体的路径下呢?
我们可以将shell中的submit命令作如下的处理:

appId=`
spark-submit \
--class cn.com.Test \
--master yarn \
--deploy-mode cluster \
/jarPath/test.jar 2>&1 | tee /dev/tty | grep -i "Submitting application" | grep -o application_.*[0-9] `
yarn logs -applicationId $appid > /logPath/${appid}.log

上述的submit命令执行结束后,会将spark运行的程序写入需要的log路径下,日志名为appId.log

<think> 我们参考了上述引用内容,用户询问的是Spark on Yarn日志分析方法。根据引用内容,我们知道Spark on YARN有两种模式:yarn-client和yarn-cluster。在yarn-client模式下,日志会直接输出到控制台,而在yarn-cluster模式下,日志不会直接显示,需要通过YARN的命令来查看。 根据引用[1]和[2]: - yarn-client模式:driver运行在提交作业的客户端,日志会输出到控制台,因此可以直接在提交作业的终端看到日志。 - yarn-cluster模式:driver运行在集群的某个容器(container)中,因此提交作业的客户端不会显示日志,需要通过YARN日志查看命令来获取。 查看日志的方法: 1. 使用YARN的命令行工具查看yarn logs -applicationId <application_id> 其中<application_id>是Spark作业提交后YARN返回的应用程序ID。 2. 在YARN的Web UI上查看:通常可以通过访问ResourceManager的Web UI(默认端口8088),找到对应的应用程序,然后点击“Logs”链接查看。 另外,引用[3]提到了在提交Spark作业时通过配置log4j属性文件来控制日志输出。我们可以通过--files选项将log4j配置文件上传到集群,并通过--conf参数指定driver和executor使用的log4j配置文件,从而自定义日志输出格式和级别。 引用[4]则给出了一个提交Spark作业到YARN集群(cluster模式)的示例命令,但未直接涉及日志查看。 因此,总结日志分析方法如下: - 对于yarn-client模式:直接在提交作业的控制台查看日志。 - 对于yarn-cluster模式: a. 使用`yarn logs -applicationId <app_id>`命令查看。 b. 通过YARN的Web UI查看。 此外,还可以通过配置log4j来调整日志的输出,例如将日志输出到文件或调整日志级别。 下面我们按照要求生成回答。 </think>### Spark on YARN 日志分析方法 在 Spark on YARN 架构中,日志分析方式取决于部署模式(client/cluster),以下是具体分析方法: #### 📍 1. **yarn-cluster模式日志查看** 在 cluster 模式下,Driver 运行在 YARN 容器中,需通过以下方式查看日志: ```bash # 查看完整应用日志(包含Driver/Executor) yarn logs -applicationId <application_id> # 例如 application_1687765432210_0012 # 查看特定容器日志 yarn logs -applicationId <app_id> -containerId <container_id> ``` > 日志存储位置:默认在 HDFS 的 `/tmp/logs/<user>/logs` 目录,保留周期由 `yarn.log-aggregation.retain-seconds` 配置[^1][^4]。 #### 📍 2. **yarn-client模式日志查看** 在 client 模式下,Driver 运行在提交节点,日志直接输出到控制台: ```bash spark-submit --master yarn --deploy-mode client ... # 执行后实时在终端输出Driver日志 ``` #### ⚙️ 3. **YARN Web UI 查看** 通过 ResourceManager Web UI(默认 `http://<rm_host>:8088`): 1. 在应用列表点击目标 `Application ID` 2. 点击 **"Logs"** 按钮查看聚合日志 ![](https://spark.apache.org/docs/latest/img/yarn-app-logs.png) #### 🔧 4. **自定义日志配置** 通过 log4j 配置文件控制日志格式和存储路径: ```bash spark-submit \ --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:/path/to/log4j-driver.properties" \ --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j-executor.properties" \ --files "/path/to/log4j-executor.properties" \ ... ``` 示例 `log4j.properties` 配置: ```properties log4j.rootLogger=INFO, file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/var/log/spark/app.log log4j.appender.file.MaxFileSize=50MB ``` 此配置将日志重定向到指定文件[^3]。 #### 📂 5. **直接访问 HDFS 日志** 聚合后的日志存储在 HDFS,路径格式: ``` hdfs://<namenode>/tmp/logs/<user>/logs/<application_id> ``` 使用 `hdfs dfs -cat` 命令直接读取: ```bash hdfs dfs -cat /tmp/logs/hadoop/logs/application_1687765432210_0012/* ``` > ⚠️ **注意事项** > - 确保 YARN 配置 `yarn.log-aggregation.enable=true` 启用日志聚合 > - 调试时可添加 `--verbose` 参数输出详细提交信息 > - 日志保留时间由 `yarn.nodemanager.log.retain-seconds` 控制(默认3小时)[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值