Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何使用纱线簇主控器获取进度条(包括阶段和任务)?_Apache Spark_Jar_Progress Bar_Apache Spark Sql_Yarn - Fatal编程技术网

Apache spark 如何使用纱线簇主控器获取进度条(包括阶段和任务)?

Apache spark 如何使用纱线簇主控器获取进度条(包括阶段和任务)?,apache-spark,jar,progress-bar,apache-spark-sql,yarn,Apache Spark,Jar,Progress Bar,Apache Spark Sql,Yarn,使用以下内容运行Spark Shell查询时: spark-shell yarn --name myQuery -i ./my-query.scala [Stage7:===========> (14174 + 5) / 62500] 在我的查询中是SimpleSparkSQL查询,在这里我读取拼花文件,运行简单查询并写出拼花文件。运行这些查询时,我会得到一个很好的进度条,如下所示: spark-shell yarn --nam

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

spark-shell yarn --name myQuery -i ./my-query.scala
[Stage7:===========>                              (14174 + 5) / 62500]
在我的查询中是SimpleSparkSQL查询,在这里我读取拼花文件,运行简单查询并写出拼花文件。运行这些查询时,我会得到一个很好的进度条,如下所示:

spark-shell yarn --name myQuery -i ./my-query.scala
[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应用程序的网页确实有一个进度条,但它基本上从不移动。即使在spark shell查询中,进度条也是无用的
  • 我曾尝试通过纱线日志获取进度条,但在作业完成之前,进度条不会聚合。即使这样,日志中也没有进度条
  • 有没有办法在集群上的jar中启动spark查询并拥有progressbar

    当我使用完全相同的查询创建jar并使用以下命令行(…)运行它时,我没有得到任何这样的进度条

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

    在使用
    Spark shell Thread
    的前一次Spark执行中,主控程序是处于客户端部署模式的Thread,即驱动程序在启动
    Spark shell
    的机器上运行

    在后一个使用
    Spark submit--master warn cluster
    的Spark执行中,master是cluster部署模式下的纱线(实际上相当于
    --master warn--deploy mode cluster
    ),即驱动程序在纱线节点上运行

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

    一个简单的解决方案是用
    纱线
    替换
    纱线簇


    控制台进度条显示活动阶段到标准错误的进度,即
    stderr

    进度包括阶段id、已完成、活动和总任务数

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


    您可以在掌握ApacheSpark2中找到更多信息。

    SparkSubmit.scala中的最新提交说明:“[Spark-21568][CORE]ConsoleProgressBar应仅在Shell中启用”。使用Spark UI监控您的工作进度。谢谢。我的工作是有一个可移植的scala代码,它作为
    spark shell
    脚本运行,还可以编译成一个jar,用于
    spark submit
    。因此,我可以在开发时使用进度条。这种方法可行,但还远远不够理想。这正是我需要的。