spark on yarn运行日志查看
1. 在webUI界面直接查看日志信息
进入8088端口可以查看日志信息,如下图:
2. 在服务器本地查看
根据applicationID在本地直接查看
yarn logs -applicationId appID
#appID是实际的spark任务的id
3. yarn on cluster 和 yarn on client日志信息的差别
- yarn on cluster
此模式下任务会提交到yarn,yarn会在集群中随机指定一个节点启动driver,执行日志只能在webUI界面查看。任务提交之后就跟提交程序的客户端无关了,该客户端关停了也不影响程序的执行。一般生产用此模式。 - 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