在YARN上Spark的日志在哪里?

Dee*_*Two 39 logging hadoop cloudera hadoop-yarn apache-spark

我是新来的.现在我可以在纱线上运行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
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到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可以在哪里设置?

MAR*_*ARK 34

您可以通过该命令访问日志

yarn logs -applicationId <application ID> [OPTIONS]

一般选择是:

  • appOwner <Application Owner> - AppOwner(如果未指定,则假定为当前用户)
  • containerId <Container ID> - ContainerId(如果指定了节点地址,则必须指定)
  • nodeAddress <Node Address>- 格式的NodeAddress nodename:port(如果指定了容器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>
Run Code Online (Sandbox Code Playgroud)

  • 只有当`yarn.log-aggregation-enable`在`yarn-site.xml`中为'true`时才会出现这种情况_并且应用程序已经完成. (10认同)

Rom*_*nko 21

这个问题的漂亮文章:

在YARN上运行Spark - 请参阅"调试应用程序"部分.所有必需示例的体面解释.

要获得正确使用Spark的历史记录服务器,您需要遵循的唯一方法是关闭应用程序中的Spark上下文.否则,应用程序历史记录服务器不会将您视为COMPLETE且不显示任何内容(尽管历史UI可访问但不可见).


Som*_*mum 14

没有一个答案清楚地说明了在哪里寻找原木(虽然它们分块)所以我把它放在一起.

如果启用了日志聚合(使用yarn.log-aggregation-enable yarn-site.xml),请执行此操作

yarn logs -applicationId <app ID>
Run Code Online (Sandbox Code Playgroud)

但是,如果没有打开,那么需要继续使用数据节点机器并查看

$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/
Run Code Online (Sandbox Code Playgroud)

application_1474886780074_XXXX是应用程序ID

  • 如果您对此感兴趣的话,“yarn messages -applicationId &lt;app ID&gt; -log_files stdout”将仅检索标准输出:)。 (3认同)
  • 对于像我这样不知道如何获取应用程序ID的人:使用`yarn applications -list`。 (2认同)
  • @stefan.m,那将是 `yarn application -list` 而不是 `yarn applications -list` (2认同)

Car*_*don 13

它记录到:

/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout
Run Code Online (Sandbox Code Playgroud)

日志位于运行Spark作业的每个节点上.