【问题标题】:Where can we see spark output console when we run in yarn cluster当我们在纱线集群中运行时,我们在哪里可以看到火花输出控制台
【发布时间】:2019-07-04 21:35:58
【问题描述】:

我是 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。 我的目标是在纱线集群上运行 spark 应用程序,但我遇到了问题。 我们如何知道我们的设置何时有效?我会告诉你我的例子。 完成设置后,我尝试运行测试 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 中查看日志,但没有出现。 你知道我应该看哪里吗? 感谢您的帮助,祝您有愉快的一天。

【问题讨论】:

  • 大家好,当然!我忘了 ; ) !
  • 然后准确地说,我看到一个人在网站上遇到了类似的问题,但我不明白答案。

标签: apache-spark hadoop hadoop-yarn


【解决方案1】:

在纱线集群模式下,默认的输出控制台并不是你的驱动程序(你提交工作的地方),而是纱线自己记录它。 这样你就可以运行了

yarn logs -applicationId application_1549879021111_0007 >application_1549879021111_0007.log

之后

more application_1549879021111_0007.log

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

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

在我可以执行 /### 找到我的打印之后

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,经过以下步骤后终于可以检查“Pi is about 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>
    

    希望对你有帮助。

    【讨论】:

    • 您好,我尝试在我的 hadoop 文件夹中输入此命令,但系统显示:yarn: error: no such option: -a。我认为我没有正确地做到这一点?你在哪里运行这个命令?
    • 嗨 Nicolas,我刚刚在主文件夹中运行 yarn logs -applicationId &lt;applicationID&gt;(如您在我的屏幕截图中所见)。请确保您在yarn-site.xml 文件中启用了纱线日志聚合。
    【解决方案3】:

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

    随着时间的推移,YARN 将驱逐这些日志,这就是您需要启用日志聚合并部署 Spark History Server 的原因。


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

    【讨论】:

    • 好的,谢谢,如果我对 Spark HIstory Sevrer 有很好的理解,我可以阅读输出吗?
    • 这是完成的 Spark 任务将汇总其输出的地方,是的。日志本身存储在 HDFS 中
    【解决方案4】:

    您可以使用资源管理器和应用程序 ID 来查看相同的视图 或者通过使用以下命令,您将获得应用程序的整个日志 使用
    yarn logs -applicationId 应用ID

    【讨论】:

    • 您好,我尝试在我的 Linux 终端中执行此操作:
    • 纱线日志 -applicationId application_1549879021111_0007。但它打印:“yarn:eoor:没有这样的选项:-a”?我知道他不认识 -applicationId ?
    【解决方案5】:

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

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

    【讨论】:

    • 你好,我运行这个:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster examples/jars/spark-examples *.jar > hdfs://localhost:9000/user/thibault/user/thibault/consoleoutfile.txt 2>&1
    • 但是我有以下错误:hdfs://localhost:9000/user/thibault/user/thibault/consoleoutfile.txt: Aucun fichier ou dossier de ce type
    • 这在您执行--deploy-mode=cluster 时不起作用。在该输出文件中,您将获得 Spark 驱动程序的 URL,日志实际位于该位置
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2016-10-11
    • 2023-03-09
    • 2014-12-17
    • 2022-10-14
    • 2018-02-22
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多