在纱线簇中运行时,我们在哪里可以看到火花输出控制台

时间:2019-02-11 11:38:04

标签: apache-spark hadoop yarn

我是Spark,Hadoop和Yarn的初学者。我使用以下命令安装Spark:https://spark.apache.org/docs/2.3.0/ 和Hadoop / Yarn与: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html。 我的目标是在纱线簇上运行火花应用程序,但是我遇到了问题。 我们怎么知道我们的设置何时起作用?我将向您展示我的例子。 完成设置后,我尝试运行测试jar:examples / jars / spark-examples * .jar。当我在本地运行时,使用: ./bin/spark-submit --class org.apache.spark.examples.SparkPi, 我一会儿看到一行:“ Pi大致为3.1370956854784273”,而当我想在以下纱线上运行时: ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster examples / jars / spark-examples * .jar我看不到“ Pi大致为3.1370956854784273”在控制台中,我不知道在哪里可以找到它。我在Url http://localhost:8088/cluster/cluster中观看了日志,但没有出现。 你知道我应该去哪里吗? 感谢您的帮助,祝您愉快。

5 个答案:

答案 0 :(得分:1)

您可以使用资源管理器和应用程序ID使用相同的视图 或使用以下命令,您将获得应用程序的整个日志 使用
纱线记录-applicationId 应用程序ID

答案 1 :(得分:1)

在纱线簇模式下,默认输出控制台实际上不是您的驱动程序(您在其中提交作业),而是纱线自行记录下来。 这样您就可以运行

yarn logs -applicationId application_1549879021111_0007 >application_1549879021111_0007.log

及之后

more application_1549879021111_0007.log

然后,您可以使用/pattern,其中pattern是您在python脚本中的打印命令中包含的单词或表达式。通常,我使用

print ('####' + expression to print + '###')

在我可以做/ ###找到我的印刷品之后

答案 2 :(得分:0)

您需要在YARN中或从Spark UI中找到Spark驱动程序容器。从那里,您可以转到Executors选项卡,然后将看到每个链接的stdoutstderr链接(加上驱动程序,最终输出将在此处)。

超时后,YARN将逐出这些日志,这就是为什么您需要启用日志聚合并部署Spark History Server的原因。


FWIW,Cloudera在最近的公告中全力以赴在Kubernetes上运行Spark。不确定YARN(或带有Ceph或S3的HDFS是这些部署中的流行数据存储)是什么意思

答案 3 :(得分:0)

我遇到了同样的问题,并在执行以下步骤后终于能够检查“ Pi大致为3.14 ...”:

首先通过将这些行添加到yarn-site.xml

,在每个节点中启用纱线日志聚合
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
    <value>3600</value>
</property>

在修改yarn-site.xml之后,您可能需要重新启动yarn和dfs

然后通过命令行检查日志:

yarn logs -applicationId <applicationID>

yarn logs -applicationId <applicationID> Pi is roughly...

希望有帮助。

答案 4 :(得分:-1)

您将不得不将控制台输出写入文件,这将执行的Spark程序的输出写入文件,您可以使用 tail -f 100 在下面提到的 consoleoutfile.txt 上查看控制台输出。

./submit_command > local_fs_path/consoleoutfile.txt 2>&1