apache-spark - K8s 上的 Spark - 出现错误:kube 模式不支持在本地引用应用程序依赖项
问题描述
我正在尝试在 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 的关闭挂钩信息 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
解决方案
错误消息来自提交 5d7c4ba4d73a72f26d591108db3c20b4a6c84f3f并包括您提到的页面:“在 Kubernetes 上运行 Spark ”,并提到您指出:
// 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.")
}
这在SPARK-18278中有描述:
它不接受在我的 spark docker 映像上运行 local: jar 文件,例如(
local:///opt/spark/examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar
并且allowsMixedArguments
妨碍)。isAppResourceReq booleans
SparkSubmitCommandBuilder.java
问题 SPARK-22962 “ Kubernetes app failed 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在评论中确认:
我用最新
spark-kubernetes jar
的替换了spark-2.3.0-bin-hadoop2.7
包装中的那个。异常消失了。
推荐阅读
- android - Android NDK x86 和 x86_64 ABI
- sql - 按年份选择 2 个最高计数(值)
- java - Lambdas Java 8 中的类型擦除泛型编译
- delphi - Delphi 中 DLL/Exe 中的字符串处理
- webassembly - Blazor 中有没有办法将 map wasm-function(#) 反转回 c# 方法?
- ruby-on-rails - 如何从 Rails 引擎在开发组中添加 gem?
- javascript - 将“元素”对象传递给类
- html - 导航栏项目扩展超过 1 行它更改为 ... 作为下拉
- firebase - 从firestore js sdk缓存中检索文档的firebase是否收费
- r - 为什么 LDA 预测不正确