【问题标题】:How to view the logs of a spark job after it has completed and the context is closed?如何在完成并关闭上下文后查看 Spark 作业的日志?
【发布时间】:2016-11-19 05:10:59
【问题描述】:

我正在运行pysparkspark 1.3standalone modeclient mode

我正在尝试通过查看过去的工作并进行比较来调查我的火花工作。我想查看他们的日志、提交作业的配置设置等。但是在上下文关闭后查看作业日志时遇到了麻烦。

当我提交工作时,我当然会打开一个 spark 上下文。在作业运行时,我可以使用 ssh 隧道打开 spark web UI。而且,我可以通过localhost:<port no> 访问转发端口。然后我可以查看当前正在运行的作业以及已完成的作业,如下所示:

然后,如果我希望查看特定作业的日志,我可以通过使用 ssh 隧道端口转发来查看该作业的特定机器的特定端口上的日志。

然后,有时作业会失败,但上下文仍然是打开的。发生这种情况时,我仍然能够通过上述方法查看日志。

但是,由于我不想同时打开所有这些上下文,所以当作业失败时,我会关闭上下文。当我关闭上下文时,该作业出现在上图中的“已完成的应用程序”下。现在,当我尝试使用 ssh 隧道端口转发查看日志时,和以前一样 (localhost:<port no>),它给了我一个 page not found

如何在上下文关闭后查看作业的日志?而且,这意味着spark context 与日志保存位置之间的关系是什么?谢谢。

再次,我正在运行pysparkspark 1.3standalone modeclient mode

【问题讨论】:

    标签: apache-spark ssh pyspark tunneling apache-spark-1.3


    【解决方案1】:

    Spark 事件日志/历史服务器适用于此用例。

    启用事件日志

    如果conf/spark-default.conf 不存在

    cp conf/spark-defaults.conf.template conf/spark-defaults.conf
    

    将以下配置添加到conf/spark-default.conf

    # This is to enabled event log
    spark.eventLog.enabled  true
    
    // this is where to store event log
    spark.eventLog.dir file:///Users/rockieyang/git/spark/spark-events
    
    // this is tell history server where to get event log
    spark.history.fs.logDirectory file:///Users/rockieyang/git/spark/spark-events
    

    历史服务器

    启动历史服务器

    sbin/start-history-server.sh 
    

    查看历史记录,默认端口为18080

    http://localhost:18080/

    【讨论】:

    • 这很好,谢谢。那么,当spark context 关闭时,为什么我在webUI 中无法查看?是因为它在上下文关闭时关闭了该端口上的流量吗?
    • 每个 SparkContext 都会启动一个 Web UI,默认情况下在端口 4040 上显示有关应用程序的有用信息。当 SparkContext 关闭时,Web UI 不再存在。
    • 但是,我认为只要有一个应用程序仍在运行,4040 端口应该仍然是开放的?
    • Spark 工作非常无状态。您关闭上下文,然后关闭应用程序。再次打开它将是一个新应用程序。
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多