spark-submit --mesos master 状态 returns 无

spark-submit --status with mesos master returns nothing

我想通过以下方式在 mesos 主机上以集群模式检索 spark 作业 运行ning 的状态:

spark-submit --master mesos://<ip>:7077 --status "driver-...-..."

它退出 0 并且没有记录,无论驱动程序的状态如何。

我知道它做对了,因为如果我 运行 命令带有无效的 mesos ip/port,我会得到

Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server
at org.apache.spark.deploy.rest.RestSubmissionClient$$anonfun$requestSubmissionStatus.apply(RestSubmissionClient.scala:165)

如果我 运行 使用无效的提交 ID,我会得到

2018-10-02 18:47:01 ERROR RestSubmissionClient:70 - Error: Server responded with message of unexpected type SubmissionStatusResponse.

知道为什么 spark-submit --status 没有返回任何东西吗?

我通过直接访问调度程序的 api 找到了解决方法:

curl -s "http://$DISPATCHER/v1/submissions/status/$SUBMISSION_ID"

仍然没有明确的答案,为什么 spark-submit --status 的行为与文档中的不一样。

不确定您使用的是哪个版本的 spark。我的调查基于 spark-2.4.0。所描述的行为对 spark standalonemesos 部署目标都有效。

org.apache.spark.deploy.rest.RestSubmissionClient 用作其余提交请求的处理程序,并以编程方式使用 INFO 级别来记录响应。

org.apache.spark.deploy.SparkSubmit 在调用 spark-submit 时用作主 class,它的记录器是所有其他记录器的顶级根记录器。

以编程方式,如果 SparkSubmit 的特定记录器未在 conf/log4j.properties 中设置(当此文件不存在时同样如此) 默认级别设置为 WARN.

更进一步,在缺少 RestSubmissionClient 的特定记录器的情况下,它获得其根记录器的级别,即 SparkSubmit 的记录器。

您可以看到错误,因为 WARN 也是默认值。

为了能够查看其余提交的日志,您可能需要调整 ${SPARK_HOME}/conf/log4j.properties log4j.logger.org.apache.spark.deploy.rest.RestSubmissionClient=INFOlog4j.logger.org.apache.spark.deploy.rest=INFO 用于该包中的其他 classes。

添加以下内容 log4j.logger.org.apache.spark.deploy.rest.RestSubmissionClient=INFO 和 log4j.logger.org.apache.spark.deploy.rest=INFO

到log4j.properties 出现在 /etc/spark/conf 位置下并再次查找状态

spark-submit --master spark://:6066 --status driver-20210516043704-0012