apache-spark - 提交到 Kubernetes 集群内的 Spark Master
问题描述
我有一个仅由一个 VM(minikube 集群)组成的 Kubernetes 集群。
在这个集群上,我有一个 Spark Master 和两个 Worker 正在运行。我已经通过以下方式设置了 Ingress 插件(我的 spark 组件使用默认端口):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: minikube-ingress
annotations:
spec:
rules:
- host: spark-kubernetes
http:
paths:
- path: /web-ui
backend:
serviceName: spark-master
servicePort: 8080
- path: /
backend:
serviceName: spark-master
servicePort: 7077
我在我的/etc/hosts
[MINIKUBE_IP] spark-kubernetes
我可以通过以下方式连接到 Master webui http://spark-kubernetes/web-ui
:
我现在想提交一个存储在本地机器上的 JAR(例如 spark-examples)。我希望这个命令能够工作:
./bin/spark-submit \
--master spark://spark-kubernetes \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
./examples/jars/spark-examples_2.11-2.4.0.jar
但我收到以下错误:
2019-04-04 08:52:36 WARN SparkSubmit$$anon$2:87 - Failed to load .
java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:810)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我做错了什么?
笔记 :
- 我知道使用 Spark 2.4 我可以拥有一个没有 Master 的集群并直接提交给 k8s,但我现在想用 master 来做
- 我使用 Spark 2.4
- 我使用 Kubernetes 1.14
解决方案
要使其工作,请使用分发 jar ( --deploy-mode client
) 的客户端模式或指定容器映像中 jar 文件的路径。所以而不是使用
./examples/jars/spark-examples_2.11-2.4.0.jar
,使用类似的东西:(
/opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar
取决于您使用的图像)
还要检查我的 K8s spark 运算符:https ://github.com/radanalyticsio/spark-operator :)
推荐阅读
- php - 使用自动生成的 DATETIME 和默认值 CURRENT_TIMESTAMP 插入新对象的 symfony 4 教义错误
- python - 解析电子邮件以识别关键字
- javascript - Django中可修改的项目符号列表
- python - 如何使用 Python 在浏览器中打开网站?
- c# - 使用 LINQ、GroupBy 更改输出样式
- extjs - Sencha ExtJs5 一个模型和一个视图中的多个模型
- c++ - MPI_DOUBLE_INT 和 C++ 结构
- sql - Pivot 为 Pivot Key 的 Null 值创建一个额外的行
- visual-studio-2013 - 客户端计算机中的 Crystal Report(加载报告失败)错误
- javascript - 什么是 .esm.js 文件,格式是什么:rollup.js 中的“es”?