如何使用 yarn-cluster master 获取进度条(包含阶段和任务)?
How to get the progress bar (with stages and tasks) with yarn-cluster master?
当 运行使用类似这样的东西进行 Spark Shell 查询时:
spark-shell yarn --name myQuery -i ./my-query.scala
我的查询内部是简单的 Spark SQL 查询,我在其中读取镶木地板文件和 运行 简单查询并写出镶木地板文件。当 运行 处理这些查询时,我得到一个像这样的漂亮进度条:
[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)
查询工作正常,结果也很好。但我只需要在流程完成时得到反馈。我尝试了以下方法。
- 运行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
,master是clientdeploy模式下的YARN,即driver在你启动的机器上运行spark-shell
来自.
后面的Spark执行spark-submit --master yarn-cluster
,master是cluster部署模式下的YARN(其实相当于--master yarn --deploy-mode cluster
),即驱动程序在 YARN 节点上运行。
话虽如此,您不会在本地机器上看到漂亮的进度条(实际上称为 ConsoleProgressBar),而是在驱动程序运行的机器上。
一个简单的解决方案是将 yarn-cluster
替换为 yarn
。
ConsoleProgressBar 显示活动阶段到标准错误的进度,即 stderr
.
进度包括阶段 ID、已完成、活动和总任务数。
ConsoleProgressBar 在spark.ui.showConsoleProgress Spark 属性 开启时创建,日志级别为org.apache.spark.SparkContext 记录器为 WARN
或更高(即打印出的消息较少,因此 ConsoleProgressBar 有一个 "space")。
您可以在精通 Apache Spark 2 中找到更多信息 ConsoleProgressBar。
当 运行使用类似这样的东西进行 Spark Shell 查询时:
spark-shell yarn --name myQuery -i ./my-query.scala
我的查询内部是简单的 Spark SQL 查询,我在其中读取镶木地板文件和 运行 简单查询并写出镶木地板文件。当 运行 处理这些查询时,我得到一个像这样的漂亮进度条:
[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)
查询工作正常,结果也很好。但我只需要在流程完成时得到反馈。我尝试了以下方法。
- 运行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
,master是clientdeploy模式下的YARN,即driver在你启动的机器上运行spark-shell
来自.
后面的Spark执行spark-submit --master yarn-cluster
,master是cluster部署模式下的YARN(其实相当于--master yarn --deploy-mode cluster
),即驱动程序在 YARN 节点上运行。
话虽如此,您不会在本地机器上看到漂亮的进度条(实际上称为 ConsoleProgressBar),而是在驱动程序运行的机器上。
一个简单的解决方案是将 yarn-cluster
替换为 yarn
。
ConsoleProgressBar 显示活动阶段到标准错误的进度,即 stderr
.
进度包括阶段 ID、已完成、活动和总任务数。
ConsoleProgressBar 在spark.ui.showConsoleProgress Spark 属性 开启时创建,日志级别为org.apache.spark.SparkContext 记录器为 WARN
或更高(即打印出的消息较少,因此 ConsoleProgressBar 有一个 "space")。
您可以在精通 Apache Spark 2 中找到更多信息 ConsoleProgressBar。