与集群通信,Spark历史服务器正在运行



我有一个工作的Spark集群,在Kubernetes上运行一个主节点和一些工作节点。此集群已用于多个spark提交作业,并且正在运行。

在主节点上,我已经启动了一个Spark历史服务器,使用$SPARK_HOME/sbin/start-history-server.sh脚本和一些配置来确定历史服务器的日志应该写在哪里:

spark.eventLog.enabled=true
spark.eventLog.dir=...
spark.history.fs.logDirectory=...
spark.hadoop.fs.s3a.access.key=...
spark.hadoop.fs.s3a.secret.key=...
spark.hadoop.fs.s3a.endpoint=...
spark.hadoop.fs.s3a.path.style.access=true

这是在集群运行后一段时间完成的。服务器正在将日志写入外部DB(使用s3a协议的minIO)。

现在,每当我提交spark作业时,在我指定的位置似乎没有任何内容被写入。

我想知道以下内容:工人如何知道我已经在主节点上启动了spark历史服务器?我是否需要以某种方式与工人沟通?

我检查过的可能原因:

  • 没有访问/权限写minIO:这不应该是这种情况,因为我正在运行spark提交作业,读取/写入文件到相同的minIO使用相同的设置
  • 日志文件夹不存在:我之前得到了这些错误,但后来我为文件创建了一个要写入的位置,从那时起我就没有得到问题
  • spark.eventLog。dir应该与spark.history.fs.logDirectory相同:

刚刚找到答案:您的工作人员将知道在哪里存储日志的方式是通过向您的spark-submit提供以下配置工作:

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

在驱动程序的spark-defaults.conf中有这些可能也足够了,这就是为什么我找不到很多关于这方面的信息,因为我没有将它添加到我的spark-defaults.conf中。

最新更新