我是新来的火花。现在我可以在yarn(2.0.0-cdh4.2.1)上运行spark0.9.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

我在哪里可以找到日志/stderr/stdout?

有没有地方设置配置?我确实从控制台找到了一个输出,说:

14/04/14 18:51:52信息客户端:ApplicationMaster的命令:$JAVA_HOME/bin/java-server-Xmx640m-Djava.io.tmpdir=$PWD/tmp org.阿帕奇。火花。部署。纱。ApplicationMaster--类SimpleApp--jar。/spark-example-1.0.0。jar--args'yarn-standalone'--worker-memory1024--worker-cores1--num-workers3 1> <LOG_DIR>/标准输出2> <LOG_DIR>/stderr

在这一行中,请注意 1> $LOG_DIR/stdout 2> $LOG_DIR/stderr

LOG_DIR在哪里可以设置?

有帮助吗?

解决方案

漂亮的文章这个问题:

在纱线上运行火花 -请参阅"调试应用程序"一节。体面的解释与所有必需的例子。

要使Spark的历史服务器正常工作,唯一需要遵循的就是在应用程序中关闭Spark上下文。否则,application history server不会将您视为完整,也不会显示任何内容(尽管history UI可访问但不那么可见)。

其他提示

您可以通过命令访问日志

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>

没有一个答案清楚地说明在哪里寻找日志(尽管它们是成片的),所以我把它放在一起。

如果日志聚合打开(与纱线。日志-聚合-启用yarn-site。xml)然后这样做

yarn logs -applicationId <app ID>

但是,如果没有打开,那么就需要在数据节点机器上查看

$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/

application_1474886780074_XXXX是应用程序id

它记录到:

/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top