apache-spark - 如何使用 yarn-cluster master 获取进度条(带有阶段和任务)?

标签 apache-spark jar progress-bar apache-spark-sql yarn

使用以下内容运行 Spark Shell 查询时:

spark-shell yarn --name myQuery -i ./my-query.scala

在我的查询中是简单的 Spark SQL 查询,我在其中读取 Parquet 文件并运行简单查询并写出 Parquet 文件。运行这些查询时,我会得到一个不错的进度条,如下所示:
[Stage7:===========>                              (14174 + 5) / 62500]

当我使用完全相同的查询创建一个 jar 并使用以下命令行运行它时:
spark-submit \
  --master yarn-cluster \
  --driver-memory 16G \
  --queue default \
  --num-executors 5 \
  --executor-cores 4 \
  --executor-memory 32G \
  --name MyQuery \
  --class com.data.MyQuery \
  target/uber-my-query-0.1-SNAPSHOT.jar 

我没有得到任何这样的进度条。该命令只是反复说
17/10/20 17:52:25 INFO yarn.Client: Application report for application_1507058523816_0443 (state: RUNNING)

查询工作正常,结果也很好。但我只需要在流程完成时获得反馈。我尝试了以下方法。
  • RUNNING Hadoop Applications 的网页确实有进度条,但基本不动。即使在 spark-shell 查询的情况下,进度条也是无用的。
  • 我尝试通过 YARN 日志获取进度条,但在作业完成之前它们不会聚合。即使这样,日志中也没有进度条。

  • 有没有办法在集群上的 jar 中启动 spark 查询并有进度条?

    最佳答案

    When I create a jar using the exact same query and run it with the following command-line (...) I don't get any such progress bar.



    这两个看似相似的 Spark 执行之间的区别在于主 URL。

    在以前的 Spark 执行中 spark-shell yarn ,主人是中的YARN客户部署模式,即驱动程序在您启动的机器上运行 spark-shell从。

    在后面的 Spark 执行中使用 spark-submit --master yarn-cluster ,主人是中的YARN集群 部署模式(实际上相当于 --master yarn --deploy-mode cluster ),即驱动程序在 YARN 节点上运行。

    话虽如此,您不会在本地机器上获得不错的进度条(实际上称为 ConsoleProgressBar ),而是在驱动程序运行的机器上。

    一个简单的解决方案是替换 yarn-clusteryarn .

    控制台进度条 显示事件阶段到标准错误的进度,即 stderr .

    进度包括阶段 ID、已完成、事件和总任务数。

    ConsoleProgressBar 是在 时创建的spark.ui.showConsoleProgress Spark 属性已打开,日志级别为 org.apache.spark.SparkContext 记录器是 WARN或更高(即打印出的消息较少,因此 ConsoleProgressBar 有一个“空间”)。

    您可以在掌握 Apache Spark 2 的 ConsoleProgressBar 中找到更多信息。 .

    关于apache-spark - 如何使用 yarn-cluster master 获取进度条(带有阶段和任务)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854779/

    相关文章:

    Python/Glade/PyGTK - Glade 标签中的下载百分比

    python - Spark 使用 Python : save RDD output into text files

    apache-spark - SBT测试不适用于 Spark 测试

    将空列替换为 r 中 Spark 数据帧中另一列中的值

    apache-spark - 在 Spark 或 Spark Streaming 中,如何配置 log4j 属性以便控制台中不会打印太多日志?

    java - 在 java 应用程序中实现自定义 jar 时出现错误

    java - 使用不在 Android 中的核心 java 库(例如 javax.*)的最佳方法是什么

    java - 将数据结构化数据保存为 java 可执行文件的一部分

    c# - 如何更改 WPF 中不确定进度条动画的速度和宽度?

    visual-c++ - 使用 Direct2D 绘制圆形进度条