【问题标题】:How to get execution DAG from spark web UI after job has finished running, when I am running spark on YARN?当我在 YARN 上运行 spark 时,如何在作业完成运行后从 spark Web UI 获取执行 DAG?
【发布时间】:2017-10-16 08:33:35
【问题描述】:

我经常在我的 Spark 作业运行时对其 DAG 进行分析。但是,为了查看 DAG,必须在应用程序运行时坐下来观看应用程序,这很烦人。

所以,我尝试使用名为 spark history-server 的东西查看 DAg,我知道它可以帮助我查看过去的工作。我可以轻松访问端口18080,并且可以看到历史服务器UI。

但是,它没有显示任何与 spark 程序执行相关的信息。我知道我正在运行历史服务器,因为当我执行 sudo service --status-all 时,我看到了

spark history-server is running [ OK ]

所以我已经尝试过这个问题的建议:here

我认为这是因为我在 YARN 上运行 spark,它一次只能使用一个资源管理器?可能是?

那么,我如何查看 spark 执行 DAG,*after* 一个作业已经完成?更具体地说,当我的资源管理器运行 YARN 时?

【问题讨论】:

    标签: apache-spark pyspark hadoop-yarn


    【解决方案1】:

    仅运行 history-server 不足以执行 DAG 以前的作业。您需要指定作业来存储所有先前作业的事件日志。

    ./sbin/start-history-server.sh 运行 Spark 历史服务器

    为 Spark 作业启用事件日志

    spark.eventLog.enabled true
    spark.eventLog.dir <path to event log(local or hdfs)>
    spark.history.fs.logDirectory  <path to event log(local or hdfs)>
    

    将这些添加到spark-defaults.conf 文件中

    【讨论】:

    • 所以,我尝试按照您的建议 ./sbin/start-history-server.sh 启动历史服务器,但我得到“找不到命令”。但是,这与通过sudo service spark-history-server start 启动历史服务器有什么不同,就像我的问题一样? (实际上我已经在我的配置中设置了spark.eventLog* 的这两个设置)。
    • 有什么建议吗?
    • 我将日志存储在哪里重要吗? spark.eventLog.dir 的路径到底是什么重要吗?
    • 默认为日志创建 file:///tmp/spark-events。
    【解决方案2】:

    正如Monitoring and Instrumentation中提到的,我们需要在spark-defaults.conf中设置以下三个参数

    spark.eventLog.enabled
    spark.eventLog.dir
    spark.history.fs.logDirectory
    

    第一个属性应该是true

    spark.eventLog.enabled           true
    

    第二个和第三个属性应该指向event-log 位置,可以是local-file-systemhdfs-file-system第二个属性定义了存储 Spark 作业日志的位置,第三个属性是历史服务器在 18080 处的 Web UI 中显示日志

    如果你选择linux local-file-system (/opt/spark/spark-events)
    要么

    spark.eventLog.dir               file:/opt/spark/spark-events
    spark.history.fs.logDirectory    file:/opt/spark/spark-events
    

    或者

    spark.eventLog.dir               file:///opt/spark/spark-events
    spark.history.fs.logDirectory    file:///opt/spark/spark-events
    

    应该工作

    如果你选择hdfs-file-system (/spark-events)
    要么

    spark.eventLog.dir               hdfs:/spark-events
    spark.history.fs.logDirectory    hdfs:/spark-events
    

    或者

    spark.eventLog.dir               hdfs:///spark-events
    spark.history.fs.logDirectory    hdfs:///spark-events
    

    或者

    spark.eventLog.dir               hdfs://masterIp:9090/spark-events
    spark.history.fs.logDirectory    hdfs://masterIp:9090/spark-events
    

    应该在 masterIp:9090core-site.xmlhadoop 配置中的 fs.default.name 属性的情况下工作。

    Apache spark历史服务器可以由

    启动
    $SPARK_HOME/sbin/start-history-server.sh
    

    第三方spark历史服务器例如Cloudera可以由

    启动
    sudo service spark-history-server start
    

    并停止历史服务器(对于 Apache)

    $SPARK_HOME/sbin/stop-history-server.sh
    

    或者(对于 cloudera)

    sudo service spark-history-server stop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2015-04-25
      • 2018-08-01
      • 2017-01-04
      • 2015-08-02
      • 2015-12-05
      • 2018-10-29
      相关资源
      最近更新 更多