纱线上的火花日志在哪里?
-
26-12-2019 - |
题
我是新来的火花。现在我可以在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>
-格式为NodeAddressnodename: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作业运行的每个节点上。