2014-04-14 112 views
29

我是新来的火花。现在我可以在纱线上运行0.9.1(2.0.0-cdh4.2.1)。但执行后没有日志。YARN上的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 /斌/ 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 - 工人芯1 --num工人3 1> <LOG_DIR> /标准输出2> < LOG_DIR>/stderr的

在这一行,通知1> $LOG_DIR/stdout 2> $LOG_DIR/stderr

哪里可以设置LOG_DIR?

回答

18

对于这个问题,漂亮的文章:

Running Spark on YARN - 参见 “调试应用程序”。所有必需的例子的体面的解释。

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

25

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

yarn logs -applicationId <application ID> [OPTIONS]

常规选项为: -appOwner AppOwner(假设如果没有指定 当前用户) -containerId数据筒(必须指定,如果节点 地址指定) -nodeAddress NodeAddress格式nodename:端口 (必须指定容器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> 
+8

这是只有在'yarn-site.xml'中'yarn.log-aggregation-enable'为'true'并且应用程序已经完成时才为true。 – thSoft

+0

如何在代码中获取纱线上的applicationId? – nish1013

+0

集群安全时,这不起作用。 – Sohaib

11

它记录到:

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

日志是你的星火作业运行的每个节点上。

11

没有一个答案能够让我们清楚在哪里寻找原木(尽管它们是分块的),所以我把它放在一起。

如果日志聚合打开(使用yarn.log-aggregation-enabled yarn-site。XML),然后执行此

yarn logs -applicationId <app ID> 

但是,如果不打开,然后一个需要到达的数据节点的机器上,并期待在

$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/ 

application_1474886780074_XXXX是应用程序ID

+1

对于那些不知道如何获取应用程序ID的人:使用 'yarn applications -list' –

+0

@ stefan.m,那将是'纱线应用-list'而不是'yarn applications -list' – iruvar

+0

而'纱线日志-applicationId -log_files stdout'将只检索标准输出,如果这些都是你感兴趣的:)。 – snark