我是新来的。现在我可以在纱线上运行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> <LOG_DIR> / stdout 2> <LOG_DIR> / stderr
在这一行,请注意1> $LOG_DIR/stdout 2> $LOG_DIR/stderr
LOG_DIR可以在哪里设置?
这个问题的漂亮文章:
Running Spark on YARN - 请参阅“调试应用程序”部分。所有必需示例的体面解释。
要获得正确使用Spark的历史记录服务器,您需要遵循的唯一方法是关闭应用程序中的Spark上下文。否则,应用程序历史记录服务器不会将您视为COMPLETE且不显示任何内容(尽管历史UI可访问但不可见)。
您可以通过该命令访问日志
yarn logs -applicationId <application ID> [OPTIONS]
一般选择是:
appOwner <Application Owner>
- AppOwner(如果未指定,则假定为当前用户)containerId <Container ID>
- ContainerId(如果指定了节点地址,则必须指定)nodeAddress <Node Address>
- 格式为nodename:port
的NodeAddress(如果指定了容器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.log-aggregation-enable 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作业的每个节点上。