在YARN上Spark的日志在哪里?

时间:2014-04-14 11:15:47

标签: hadoop logging apache-spark cloudera yarn

我是新来的火花。现在我可以在纱线上运行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可以在哪里设置?

4 个答案:

答案 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作业的每个节点上。