Hadoop 火花纱线中的原木在哪里?

Hadoop 火花纱线中的原木在哪里?,hadoop,logging,apache-spark,cloudera,yarn,Hadoop,Logging,Apache Spark,Cloudera,Yarn,我是新手。现在我可以在纱线上运行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 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
在哪里可以找到日志/stderr/stdout

有什么地方可以设置配置吗? 我确实发现控制台的输出是这样的:

14/04/14 18:51:52信息客户端:应用程序管理员的命令:$JAVA_HOME/bin/JAVA-server-Xmx640m-Djava.io.tmpdir=$PWD/tmp org.apache.spark.deploy.warn.ApplicationMaster--class SimpleApp--jar./spark-example-1.0.0.jar--args'warn standalone'--worker内存1024 worker cores 1--num worker 3 1>/stdout 2>/stderr

在这一行中,请注意
1>$LOG\u DIR/stdout 2>$LOG\u DIR/stderr


在哪里可以设置日志目录?

您可以通过命令访问日志

纱线原木-应用程序ID[选项]

一般选择是:

  • appOwner
    -appOwner(如果未指定,则假定为当前用户)
  • containerId
    -containerId(如果节点 地址(已指定)
  • nodeAddress
    -格式为
    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>
纱线原木-应用程序ID应用程序
纱线日志-应用程序ID应用程序_1414530900704_0003 myuserid
//用户ID是不同的
纱线原木-应用ID-所有者

关于这个问题的漂亮文章:

-请参阅“调试应用程序”一节。用所有必要的例子进行得体的解释

要获得Spark的正确工作历史记录服务器,您只需在应用程序中关闭Spark上下文。否则,application history server不会将您视为完整的,也不会显示任何内容(尽管历史用户界面可访问但不可见)。

它会记录到:

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

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

没有一个答案清楚地表明在何处查找日志(尽管它们是零碎的),因此我将其放在一起

如果启用了日志聚合(使用warn.log-aggregation-enable-warn site.xml),则执行此操作

yarn logs -applicationId <app ID>

application_1474886780074_XXXX是应用程序id,仅当
warn时才有效。在
warn site.xml
中启用日志聚合
is
true
,并且应用程序已经完成。nish1013尝试warn应用程序--列出如果日志文件压缩,如何获取日志?我尝试了这个命令,但是它输出了乱码的压缩文件。谢谢。要获取应用程序ID,请运行
纱线应用程序-列表-appStates ALL
,并获取第一行以“application”开头的第一个字段。在我的例子中,它类似于“application1480604706480_0001”。@jacek Laskowski,来自spark history server,如果启用了日志聚合,我将无法访问容器日志。它会一直检查节点管理器日志目录,而不是聚合日志位置。对于像我这样不知道如何获取应用程序id的人来说,这是一份完整的工作:使用
纱线应用程序-列表
@stefan.m,这将是
纱线应用程序-list
而不是
纱线应用程序-list
纱线日志-applicationId-log\u文件stdout
将仅检索stdout(如果您感兴趣的话):)。对于未来的读者,我发现这个库很有用。请尝试一下:当日志聚合未打开时,它存储在
/tmp/logs
中。我使用
hdfs dfs-ls/tmp/logs/{USER}/logs
找到了我的,其中
{USER}
是启动spark应用程序的用户。这对我来说很有效。此外,如果您正在运行群集,日志可能位于其中一个节点上。因此,请确保您的集群中的每个节点都很便宜,并查看日志是否在此目录结构中。
$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/