spark中是否有任何方法可以保持每个阶段的运行时间?

lokaqttq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(377)

我正在测量具有不同资源配置的spark作业的运行时间,需要比较每个阶段的运行时间。我只能在作业运行时在ui中看到它们。我在hadoop集群上运行我的作业,并使用yarn作为资源管理器。
有没有办法保持每个阶段的运行时间?有他们的日志吗?
更新:
我阅读了评论中提到的监控文档,并添加了以下几行,但不起作用:
在spark-defaults.conf中:

spark.eventLog.enabled   true
spark.eventLog.dir    hdfs:///[nameNode]:8020/[PathToSparkEventLogDir]
spark.history.fs.logDirectory 
  hdfs:///[nameNode]:8020/[PathTosparkLogDirectory]

在spark-env.sh中:

export SPARK_PUBLIC_DNS=[nameNode]
SPARK_HISTORY_OPTS="-Dspark.eventLog.enabled=true"
SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=$sparkHistoryDir"
SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.provider=org.apache.spark.deploy.history.FsHistoryProvider"
SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.cleaner.enabled=true"
SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.cleaner.interval=7d"

它查找/tmp/spark events/文件夹,当我创建它并启动历史服务器时,它不会显示任何完整或不完整的应用程序。
注意,我也尝试了logdirectory值而没有端口号,但是没有成功。

e5njpo68

e5njpo681#

我可以运行spark history server,并通过应用以下命令查看已完成和未完成应用程序的历史:
在conf/spark-env.sh中设置公共dns值

export SPARK_PUBLIC_DNS= NameNode-IP

在我的java代码中将这些属性添加到sparkconf中:

SparkConf conf = new SparkConf()
                .set("spark.eventLog.enabled", "true")
                .set("spark.eventLog.dir", "hdfs:///user/[user-path]/sparkEventLog")
                .set("spark.history.fs.logDirectory", "hdfs:///user/[user-path]/sparkEventLog")

创建包含以下行的属性文件(spark/conf/history.properties)

spark.eventLog.enabled  true
spark.eventLog.dir      hdfs:///user/[user-path]/sparkEventLog
spark.history.fs.logDirectory   hdfs:///user/[user-path]/sparkEventLog

启动历史服务器:

./sbin/start-history-server.sh --properties-file ./conf/history.properties

注意:属性eventlog.dir和eventlog.dir应该具有保存值。

相关问题