spark on yarn运行日志查看

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