Apache spark K8s上的Spark-获取错误:kube模式不支持在本地模式中引用应用程序依赖项

Apache spark K8s上的Spark-获取错误:kube模式不支持在本地模式中引用应用程序依赖项,apache-spark,kubernetes,Apache Spark,Kubernetes,我正在尝试在k8s上设置火花束。通过本文,我成功地创建并设置了一个包含三个节点的集群: 之后,当我尝试在集群上部署spark时,spark提交设置失败。 我使用了这个命令: ~/opt/spark/spark-2.3.0-bin-hadoop2.7/bin/spark-submit \ --master k8s://https://206.189.126.172:6443 \ --deploy-mode cluster \ --name word-count \ --class org.apa

我正在尝试在k8s上设置火花束。通过本文,我成功地创建并设置了一个包含三个节点的集群:

之后,当我尝试在集群上部署spark时,spark提交设置失败。 我使用了这个命令:

~/opt/spark/spark-2.3.0-bin-hadoop2.7/bin/spark-submit \
--master k8s://https://206.189.126.172:6443 \
--deploy-mode cluster \
--name word-count \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=docker.io/garfiny/spark:v2.3.0 \
—-conf spark.kubernetes.driver.pod.name=word-count \
local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar
这给了我一个错误:

Exception in thread "main" org.apache.spark.SparkException: The Kubernetes mode does not yet support referencing application dependencies in the local file system.
    at org.apache.spark.deploy.k8s.submit.DriverConfigOrchestrator.getAllConfigurationSteps(DriverConfigOrchestrator.scala:122)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:229)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:227)
    at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2585)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:227)
    at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:192)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:879)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2018-06-04 10:58:24信息关闭挂钩管理器:54-关闭挂钩已调用 2018-06-04 10:58:24信息关机挂钩管理器:54-删除目录/private/var/folders/lz/0bb8xlyd247cwc3kvh6pmrz0000gn/T/spark-3967f4ae-e8b3-428d-ba22-580fc9c840cd

注意:我遵循本文在k8s上安装spark。

根据所述:

依赖管理 如果应用程序的依赖项都是 托管在远程位置,如HDFS或HTTP服务器,它们可能是 由相应的远程URI引用还有,应用程序 依赖项可以预先装载到定制的Docker映像中。 依赖项可以通过引用来添加到类路径中 local://URIs和/或设置SPARK\u EXTRA\u类路径环境 DockerFile中的变量本地://方案也是必需的 在中的自定义Docker映像中引用依赖项时 spark提交

请注意,使用 提交客户端的本地文件系统目前还不受支持。

bin/spark-submit \
--master k8s://https://lubernetes:6443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.namespace=spark \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=gcr.io/cloud-solutions-images/spark:v2.3.0-gcs \
--conf spark.kubernetes.authenticate.submission.caCertFile=/var/run/secrets/kubernetes.io/serviceaccount/k8.crt \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \ 
local:///usr/spark-2.3.0/examples/jars/spark-examples_2.11-2.3.0.jar

错误消息来自并包含您提到的页面:“”,其中包含您指出的内容:

//TODO(SPARK-23153):在支持提交客户端本地依赖项后删除。
if(existSubmissionLocalFiles(sparkJars)| | existSubmissionLocalFiles(sparkFiles)){
抛出新的SparkException(“Kubernetes模式还不支持引用应用程序”+
“本地文件系统中的依赖项。”)
}
这在以下章节中进行了描述:

它不接受运行local:jar文件,例如
local:///opt/spark/examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar
,在我的spark docker图像上(
allowsMixedArguments
isAppResourceReq booleans
位于
SparkSubmitCommandBuilder.java
碍事)

这与

报告提到:

这是资源暂存服务器用例。我们将在2.4.0的时间框架内实现这一点

同时,在中引入了该错误消息

它包括以下评论:

我的手动测试实际上使用了位于gcs和http上的主应用程序jar。
具体来说,为了记录在案,我做了以下测试:

  • 使用gs://main应用程序jar和http://dependency jar。成功了
  • 使用https://main应用程序jar和http://dependency jar。成功了
  • 使用本地应用程序jar。成功了
  • 使用文件://main应用程序jar。失败了
  • 使用file://依赖项jar。失败了
该问题现在应该已经解决,并且确认:

我使用最新的
spark kubernetes jar
替换了
spark-2.3.0-bin-hadoop2.7
包中的jar。例外情况消失了

我也有同样的案子

我不知道该怎么办?如何修复?Spark版本2.3.0

复制并重命名spark-kubernetes_2.11-2.3.1.jar->spark-kubernetes_2.11-2.3.0.jar

Spark找不到相应的kubernetes文件。

bin/spark-submit \
--master k8s://https://lubernetes:6443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.namespace=spark \
--conf spark.executor.instances=5 \
--conf spark.kubernetes.container.image=gcr.io/cloud-solutions-images/spark:v2.3.0-gcs \
--conf spark.kubernetes.authenticate.submission.caCertFile=/var/run/secrets/kubernetes.io/serviceaccount/k8.crt \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \ 
local:///usr/spark-2.3.0/examples/jars/spark-examples_2.11-2.3.0.jar

谢谢你的帮助

谢谢你,沃克。我使用了最新的spark kubernetes jar来替换spark-2.3.0-bin-hadoop2.7包中的jar。例外情况消失了。但我还需要解决其他问题。一旦一切顺利,我会发布最终测试结果。