我想通过以下方式检索在mesos主机上以群集模式运行的spark作业的状态:
spark-submit --master mesos://<ip>:7077 --status "driver-...-..."
它退出了 0
无论驱动程序的状态如何,都没有日志记录。
我知道它做的是对的,因为如果我用一个无效的mesos ip/端口运行命令,我会得到
Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server
at org.apache.spark.deploy.rest.RestSubmissionClient$$anonfun$requestSubmissionStatus$3.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
什么都不退吗?
2条答案
按热度按时间piah890a1#
不知道你用的是什么版本的spark。我的调查基于spark-2.4.0。所描述的行为对spark独立和mesos部署目标都有效。
org.apache.spark.deploy.rest.RestSubmissionClient
用作rest提交请求的处理程序,并以编程方式使用info level记录响应。org.apache.spark.deploy.SparkSubmit
在调用spark submit时用作主类,其记录器是所有其他记录器的顶级根记录器。从编程的Angular 来说,如果在conf/log4j.properties中没有设置sparksubmit的特定记录器(当不存在此文件时也会设置此属性),则默认级别设置为warn。
更进一步说,在restsubmissionclient没有特定的记录器的情况下,它将获得根记录器的级别,即sparksubmit的记录器。
您可以看到错误,因为“再次警告”是默认值。
为了能够查看rest提交的日志,您可能需要调整${spark\u home}/conf/log4j.properties
log4j.logger.org.apache.spark.deploy.rest.RestSubmissionClient=INFO
或者log4j.logger.org.apache.spark.deploy.rest=INFO
对于该包中的其他类。cigdeys32#
我通过直接访问dispatcher的api找到了一个解决方法:
curl -s "http://$DISPATCHER/v1/submissions/status/$SUBMISSION_ID"
仍然没有明确的答案为什么spark-submit --status
但并不像文件所记载的那样。