当前位置: 首页 > 知识库问答 >
问题:

当我在纱线上运行火花时,如何在作业完成后从火花网络UI获得执行DAG?

澹台硕
2023-03-14

我经常在火花作业运行时对DAG进行分析。但是,当应用程序运行时必须坐着看才能看到DAG,这很烦人。

因此,我尝试使用名为spark history server的东西查看DAg,我知道它可以帮助我查看过去的作业。我可以轻松访问端口18080,并且可以看到history server UI。

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

spark history server正在运行[正常]

所以我已经尝试了这个问题的建议:这里。

我想这是因为我在运行spark on Thread,它一次只能使用一个资源管理器?大概

那么,我如何看到火花执行DAG,*在*一个作业完成后?更具体地说,当运行YARN作为我的资源管理器时?

共有2个答案

欧阳正德
2023-03-14

仅运行历史服务器不足以执行以前的作业。您需要指定作业来存储所有以前作业的事件日志。

通过运行Spark history server/sbin/启动历史记录服务器。sh

启用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)>

在火花默认值上添加这些。conf文件

董胡媚
2023-03-14

监控和仪表中所述,我们需要在火花默认值中设置以下三个参数。形态

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

第一个属性应为true

spark.eventLog.enabled           true

第二个和第三个属性应指向事件日志的位置,这些位置可以是本地文件系统或hdfs文件系统。第二个属性定义spark作业的日志存储位置,第三个属性是history server在18080的web UI中显示日志。

如果选择linux本地文件系统(/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(/spack-event)
要么

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

应该在master Ip: 9090hadoop配置的core-site.xml中的fs.default.name属性的地方工作。

Apache spark history server可以通过以下方式启动

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

第三方spark history server(例如Cloudera)可通过以下方式启动

sudo service spark-history-server start

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

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

或(对于cloudera)

sudo service spark-history-server stop
 类似资料:
  • 当我使用spark-submit with master yarn和deploy-mode cluster提交spark作业时,它不会打印/返回任何applicationId,一旦作业完成,我必须手动检查MapReduce jobHistory或spark HistoryServer来获取作业细节。 我的集群被许多用户使用,在jobHistory/HistoryServer中找到我的作业需要很多时

  • 然而,我不知道我是否真的需要一个插件,如果需要,是哪一个,以及如何去做它。我尝试使用'build/mvn'和'build/sbt'直接编译github源代码,但是'spark-assembly2.11-2.0.2.jar'文件只有283字节。 我的目标是使用较新版本的fat jar运行pyspark shell,其方式与这里提到的类似。

  • 在yarn-cluster模式下,驱动程序在应用程序主程序中运行(在YARN集群内)。在yarn-client模式下,它在提交作业的client节点中运行 我想知道使用一种模式比使用另一种模式有什么好处?我们在什么情况下应该使用哪种模式。

  • 我一直试图提交一个简单的python脚本,以便在一个带有Yarn的集群中运行它。当我在本地执行作业时,没有问题,一切都很好,但当我在集群中运行它时,它就失败了。 诊断:文件不存在:hdfs://myserver:8020/user/josholsan/.sparkstaging/application_1510046813642_0010/test.py 我不知道为什么它找不到test.py,我也

  • 我已经在一个15节点的Hadoop集群上安装了。所有节点都运行和最新版本的Hadoop。Hadoop集群本身是功能性的,例如,YARN可以成功地运行各种MapReduce作业。 我可以使用以下命令在节点上本地运行Spark Shell,而不会出现任何问题:。 你知道为什么我不能用客户端模式在纱线上运行Spark Shell吗?

  • 我正在纱线客户端模式下运行火花作业。我在unix脚本中使用Spark提交命令运行这些作业。我想为正在运行的每个火花作业创建日志。我尝试使用以下命令获取日志: 但在这里,如果spark作业失败,它将不会在命令状态检查中被捕获,可能是unix检查|$tee命令的状态,无论spark作业成功还是失败,该命令始终是成功的 我尝试使用log4j但没有成功。我想将每个火花作业日志文件存储在本地unix服务器上