我是新来的火花。现在我可以在纱线上运行spark 0.9.1(2.0.0-cdh4.2.1)。但是执行后没有日志。
以下命令用于运行spark示例。但是,在正常的MapReduce作业中,在历史记录服务器中找不到日志。
SPARK_JAR=./assembly/target/scala-2.10/spark-assembly-0.9.1-hadoop2.0.0-cdh4.2.1.jar \
./bin/spark-class org.apache.spark.deploy.yarn.Client --jar ./spark-example-1.0.0.jar \
--class SimpleApp --args yarn-standalone --num-workers 3 --master-memory 1g \
--worker-memory 1g --worker-cores 1
我在哪里可以找到logs / stderr / stdout?
是否有设置配置的地方? 我确实从控制台找到了一个输出说:
14/04/14 18:51:52 INFO客户端:ApplicationMaster的命令:$ JAVA_HOME / bin / java -server -Xmx640m -Djava.io.tmpdir = $ PWD / tmp org.apache.spark.deploy。 yarn.ApplicationMaster --class SimpleApp --jar ./spark-example-1.0.0.jar --args'yarn-standalone' - worker-memory 1024 --worker-cores 1 --num-workers 3 1> < LOG_DIR> / stdout 2> < LOG_DIR> / stderr
在此行中,请注意1> $LOG_DIR/stdout 2> $LOG_DIR/stderr
LOG_DIR可以在哪里设置?
答案 0 :(得分:31)
您可以通过命令
访问日志 yarn logs -applicationId <application ID> [OPTIONS]
一般选项是:
appOwner <Application Owner>
- AppOwner(如果未指定,则假定为当前用户)containerId <Container ID>
- ContainerId(必须指定节点
地址已指定)nodeAddress <Node Address>
- 格式为nodename:port
的NodeAddress(如果指定了容器ID,则必须指定)示例:
yarn logs -applicationId application_1414530900704_0003
yarn logs -applicationId application_1414530900704_0003 myuserid
// the user ids are different
yarn logs -applicationId <appid> --appOwner <userid>
答案 1 :(得分:20)
这个问题的漂亮文章:
Running Spark on YARN - 请参阅“调试您的应用程序”部分。所有必需示例的体面解释。
为了正确使用Spark的历史记录服务器,您需要遵循的唯一方法是关闭应用程序中的Spark上下文。否则,应用程序历史记录服务器不会将您视为COMPLETE且不显示任何内容(尽管历史UI可访问但不可见)。
答案 2 :(得分:13)
没有一个答案清楚地说明了在哪里寻找原木(虽然它们是碎片)所以我把它放在一起。
如果启用了日志聚合(使用yarn.log-aggregation-enable yarn-site.xml),请执行此操作
yarn logs -applicationId <app ID>
但是,如果没有打开,那么需要继续使用数据节点机器并查看
$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/
application_1474886780074_XXXX是应用程序ID
答案 3 :(得分:12)
记录到:
/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout
日志位于运行Spark作业的每个节点上。