我正在尝试在k8s上设置一个火花星团。通过以下文章,我设法创建并设置了包含三个节点的集群: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
之后当我尝试在群集上部署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 INFO ShutdownHookManager:54 - 关闭挂钩调用 2018-06-04 10:58:24 INFO ShutdownHookManager:54 - 删除目录/ private / var / folders / lz / 0bb8xlyd247cwc3kvh6pmrz00000gn / T / spark-3967f4ae-e8b3-428d-ba22-580fc9c840cd
注意:我按照这篇文章在k8s上安装spark。 https://spark.apache.org/docs/latest/running-on-kubernetes.html
答案 0 :(得分:6)
错误消息来自commit 5d7c4ba4d73a72f26d591108db3c20b4a6c84f3f并包含您提及的页面:“Running Spark on Kubernetes”并提及您指出:
// TODO(SPARK-23153): remove once submission client local dependencies are supported.
if (existSubmissionLocalFiles(sparkJars) || existSubmissionLocalFiles(sparkFiles)) {
throw new SparkException("The Kubernetes mode does not yet support referencing application " +
"dependencies in the local file system.")
}
中对此进行了描述
相关联它不接受运行local:jar文件,例如
local:///opt/spark/examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar
,在我的火花泊坞窗图片上allowsMixedArguments
中的isAppResourceReq booleans
和SparkSubmitCommandBuilder.java
阻挡了我。
issue SPARK-22962 "Kubernetes app fails if local files are used"提及:
这是资源登台服务器用例。我们将在2.4.0时间框架上游。
与此同时,PR 20320中引入了该错误消息。
它包括评论:
我实际使用的手动测试使用位于gcs和http上的主应用程序jar 为了具体和记录,我做了以下测试:
- 使用gs://主应用程序jar和http://依赖jar。成功了。
- 使用https://主应用程序jar和http://依赖jar。成功了。
- 使用local://主应用程序jar。成功了。
- 使用file://主应用程序jar。失败。
- 使用file://依赖jar。失败。
现在应该修复该问题,OP garfiny确认in the comments:
我使用最新的
spark-kubernetes jar
来替换spark-2.3.0-bin-hadoop2.7
包中的那个。例外消失了。
答案 1 :(得分:2)
根据上面提到的documentation:
依赖关系管理
如果您的应用程序的依赖项都是 托管在远程位置,如HDFS或HTTP服务器,它们可能是 由适当的远程URI引用。 另外,申请 依赖项可以预先安装到自定义构建的Docker镜像中。那些 可以通过引用它们将依赖项添加到类路径中 local:// URIs和/或设置SPARK_EXTRA_CLASSPATH环境 Dockerfiles中的变量。 还需要local://方案 在引用定制的Docker镜像中的依赖关系时 火花提交即可。
请注意,使用应用程序依赖项 目前尚不支持提交客户端的本地文件系统。
答案 2 :(得分:0)
我有同样的情况。
我不知道该怎么办?怎么修? 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
感谢您的帮助!