在
println
中的 Spark
上运行作业时,我无法找到来自 Scala 中 EMR
调用的错误日志或消息。
我在哪里可以访问这些?
我正在使用
Spark job
将用 Scala
编写的 EMR
提交给 script-runner.jar
,并将参数 --deploy-mode
设置为 cluster
并将 --master
设置为 yarn
。它运行良好。
但是,我在
println
中没有看到我的 Amazon EMR UI
语句,其中列出了“stderr,stdoutetc. Furthermore if my job errors I don't see why it had an error. All I see is this in the
stderr`:
15/05/27 20:24:44 INFO yarn.Client: Application report from ResourceManager:
application identifier: application_1432754139536_0002
appId: 2
clientToAMToken: null
appDiagnostics:
appMasterHost: ip-10-185-87-217.ec2.internal
appQueue: default
appMasterRpcPort: 0
appStartTime: 1432758272973
yarnAppState: FINISHED
distributedFinalState: FAILED
appTrackingUrl: http://10.150.67.62:9046/proxy/application_1432754139536_0002/A
appUser: hadoop
`
使用纱线上集群的部署模式,Spark 驱动程序以及执行的用户代码将位于 Application Master 容器内。听起来您在集群上启用了 EMR 调试,因此日志也应该推送到 S3。在 S3 位置查看
task-attempts/<applicationid>/<firstcontainer>/*
。
我也花了很多时间来解决这个问题。在以下位置找到日志: EMR UI 控制台 -> 摘要 -> 日志 URI -> 容器 -> application_xxx_xxx -> container_yyy_yy_yy -> stdout.gz。
如果您通过 SSH 连接到集群的主节点,那么您应该能够在以下位置找到 stdout、stderr、syslog 和控制器日志:
/mnt/var/log/hadoop/steps/<stepname>
事件日志,
spark-history-server
所需的日志可以在:找到
hdfs:///var/log/spark/apps
如果您使用 emr-bootstrap 提交作业,您可以使用
--log-uri
将日志目录指定为 s3 存储桶
当您使用yarn时,使用yarn log命令很容易获取日志。
使用示例:
纱线日志-applicationId applicationId -am 1 | grep“您的应用程序日志”
这将从第一个容器(通常是主容器)打印日志。