我有一个独立的spark 2.4.0集群,我需要部署应用程序传递一些额外的java选项(驱动程序和执行程序)。要做到这一点,我使用spark.driver.extraJavaOptions
和spark.executor.extraJavaOptions
描述here。它在客户端模式下工作得非常好,但在集群模式下存在问题 - 变量不会传递给驱动程序(对于执行程序,它仍然可以正常)。我也面临着spark.driver.extraClassPath
的类似问题,所以我猜问题更通用。
无论如何,我已经设法找到了解决方案:
spark.master.rest.enabled
显式启用REST提交(从2.4.0开始默认为false,在旧版本中为true - 请参阅PR)问题:
spark.driver.extraJavaOptions
(和类似)选项按预期工作时,我无法在文档中找到我们实际需要通过REST部署的内容。 Official doc没有提到它。是否记录在其他任何地方,或者我遗漏了一些明显的东spark.master.rest.enabled
设置为true时,我会在日志中获得以下信息:
警告:主endpointspark:// localhost:7077不是REST服务器。而是回到遗留提交网关。从这一点来看,我会说,通常不通过REST提交是遗留问题,但是再次 - 它没有在任何地方记录,也为什么他们会默认禁用REST提交(参见我的第二个问题)?
StandaloneAppClient$ClientEndpoint:87 - Failed to connect to master localhost:6066
这是否意味着我们在更改部署模式时总是必须切换端口?重点是什么,我们为什么不能有一种方式来部署我们的应用程序?我不是一个外籍人士,我还没有和2.4合作过,但我会分享我所知道的。
我不记得有类路径的问题,但它没有说太多。我主要使用其余的API和集群模式。只是为了确定..罐子以“local:/”开头吧?
其余的AFAIK又名“Spark hidden API”,它可以解释“无法在文档中找到”。
在我看来,其余的API没有以任何方式保护,这可能是它被隐藏的原因?但我很高兴听到至少它现在默认禁用,我认为它是在早期版本上默认启用的。
“重新回到遗留提交网关”会响铃,所以我认为它没问题(没有额外的类路径问题)
我不认为rest API支持客户端模式。怎么样? Jetty在主服务器上运行提交请求。我不知道它现在如何在调用主机上启动驱动程序进程?
至于类路径上丢失的罐子,你试过“spark.jars”吗?
如果全部失败...试试超级罐:-)
看起来这是SPARK Jira报道的错误
PR with the fix被提出,希望很快就能合并