我是新来的.现在我可以在纱线上运行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>
/stdout 2> /stderr
在这一行,请注意 1> $LOG_DIR/stdout 2> $LOG_DIR/stderr
LOG_DIR可以在哪里设置?
您可以通过该命令访问日志
yarn logs -applicationId
一般选择是:
appOwner
- AppOwner(如果未指定,则假定为当前用户)
containerId
- ContainerId(如果指定了节点地址,则必须指定)
nodeAddress
- 格式的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--appOwner
这个问题的漂亮文章:
在YARN上运行Spark - 请参阅"调试应用程序"部分.所有必需示例的体面解释.
要获得正确使用Spark的历史记录服务器,您需要遵循的唯一方法是关闭应用程序中的Spark上下文.否则,应用程序历史记录服务器不会将您视为COMPLETE且不显示任何内容(尽管历史UI可访问但不可见).
没有一个答案清楚地说明了在哪里寻找原木(虽然它们分块)所以我把它放在一起.
如果启用了日志聚合(使用yarn.log-aggregation-enable yarn-site.xml),请执行此操作
yarn logs -applicationId
但是,如果没有打开,那么需要继续使用数据节点机器并查看
$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/
application_1474886780074_XXXX是应用程序ID
它记录到:
/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout
日志位于运行Spark作业的每个节点上.