【问题标题】:Spark job execution timeSpark 作业执行时间
【发布时间】:2016-08-25 06:26:18
【问题描述】:

这可能是一个非常简单的问题。但是有没有简单的方法来测量一个 spark 作业的执行时间(使用spark-submit 提交)?

这将有助于我们根据输入数据的大小来分析 Spark 作业。

编辑:我使用 http://[driver]:4040 来监控我的工作,但是这个 Web UI 在我的工作完成后关闭。

【问题讨论】:

    标签: apache-spark apache-spark-mllib apache-spark-1.5


    【解决方案1】:

    SPARK 本身提供有关 Spark 作业每个阶段的详细信息。前往http://your-driver-node:4040的Spark Web界面,也可以使用历史服务器。

    如果您只需要执行时间,请转到“http://your-driver-node:8080”,您可以看到提交给 spark 的作业的执行时间。

    【讨论】:

    • 您可以查看以下网址:-spark.apache.org/docs/latest/monitoring.html
    • 我总是使用http://your-driver-node:4040 来监控我的工作,但它并没有给我端到端的执行时间,是吗?如果是,那么在哪里......不过我会检查第二个链接!谢谢!
    • 我似乎无法访问 8080,而且我没有看到它记录在案...您能否了解有关此 8080 页面的更多信息?
    【解决方案2】:

    每个 SparkContext 都会启动自己的 Web UI 实例,该实例可在

    http://[master]:4040
    默认情况下(可以使用 spark.ui.port 更改端口)。

    它提供包含以下信息的页面(标签):

    作业、阶段、存储(包含 RDD 大小和内存使用) 环境、执行器、SQL

    此信息仅在应用程序默认运行之前可用。

    提示:您可以通过启用spark.eventLog.enabled 在应用程序完成后使用Web UI。

    示例 web ui,您可以在其中看到时间为 3.2 小时:

    【讨论】:

    • 谢谢,我本来想问工作结束后信息的保存,但你还是回答了。 spark.eventLog.enabled 是在提交 spark 作业时在命令行上指定的配置参数,对吗?
    • 是的,你是对的。例如:./bin/spark-submit --name "我的应用" --master local[4] --conf spark.eventLog.enabled=false --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails - XX:+PrintGCTimeStamps" myApp.jar
    【解决方案3】:

    如果您愿意,可以编写一段代码来获取净执行时间。

    示例:

    val t1 = System.nanoTime //your first line of the code
    
    val duration = (System.nanoTime - t1) / 1e9d //your last line of the code
    

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多