运行 Kubernetes 上的 Spark 示例失败
Run Spark example on Kubernetes failed
- 我的MacOS/X版本:10.15.3
- Minikube 版本:1.9.2
我使用以下命令启动 minikube,没有任何额外的配置。
minikube start --driver=virtualbox
--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --cpus 4 --memory 4096 --alsologtostderr
然后我从Spark官网下载了spark-2.4.5-bin-hadoop2.7,通过以下命令构建spark镜像
eval $(minikube docker-env)
./bin/docker-image-tool.sh -m -t 2.4.5 build
然后我 运行 Spark-pi 在存储 Spark 2.4.5 的本地机器中使用以下命令。
kubectl create serviceaccount spark
kubectl create clusterrolebinding spark-role --clusterrole=admin --serviceaccount=default:spark --namespace=default
./bin/spark-submit \
--master k8s://https://192.168.99.104:8443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.executor.instances=1 \
--conf spark.kubernetes.container.image=spark:2.4.5 \
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar
我收到以下错误
可以在 full log
找到完整的日志
谁能解释这个错误以及如何解决它?
请检查您使用 Minikube 启动的 Kubernetes 版本。
Spark v2.4.5
fabric8 Kubernetes 客户端 v4.6.1
与 Kubernetes API 兼容 1.15.2
(参考 )。
您可以通过在 minikube start
命令中添加 --kubernetes-version
标志来使用 Minikube 启动特定的 Kubernetes API 版本(参考 docs)。
这个问题也可能是由 问题的评论中描述的 OkHttp 库错误引起的。
另一个 spark 图像(来自 gcr.io/spark-operator/spark
)对我有用,没有降级 Kubernetes 的版本。
bin/spark-submit \
--master k8s://https://192.168.99.100:8443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.driver.cores=1 \
--conf spark.driver.memory=512m \
--conf spark.executor.instances=2 \
--conf spark.executor.memory=512m \
--conf spark.executor.cores=1 \
--conf spark.kubernetes.container.image=gcr.io/spark-operator/spark:v2.4.5 \
--conf spark.kubernetes.container.image.pullPolicy=IfNotPresent \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar
- 我的MacOS/X版本:10.15.3
- Minikube 版本:1.9.2
我使用以下命令启动 minikube,没有任何额外的配置。
minikube start --driver=virtualbox
--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --cpus 4 --memory 4096 --alsologtostderr
然后我从Spark官网下载了spark-2.4.5-bin-hadoop2.7,通过以下命令构建spark镜像
eval $(minikube docker-env)
./bin/docker-image-tool.sh -m -t 2.4.5 build
然后我 运行 Spark-pi 在存储 Spark 2.4.5 的本地机器中使用以下命令。
kubectl create serviceaccount spark
kubectl create clusterrolebinding spark-role --clusterrole=admin --serviceaccount=default:spark --namespace=default
./bin/spark-submit \
--master k8s://https://192.168.99.104:8443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.executor.instances=1 \
--conf spark.kubernetes.container.image=spark:2.4.5 \
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar
我收到以下错误
可以在 full log
找到完整的日志谁能解释这个错误以及如何解决它?
请检查您使用 Minikube 启动的 Kubernetes 版本。
Spark v2.4.5
fabric8 Kubernetes 客户端 v4.6.1
与 Kubernetes API 兼容 1.15.2
(参考
您可以通过在 minikube start
命令中添加 --kubernetes-version
标志来使用 Minikube 启动特定的 Kubernetes API 版本(参考 docs)。
这个问题也可能是由
另一个 spark 图像(来自 gcr.io/spark-operator/spark
)对我有用,没有降级 Kubernetes 的版本。
bin/spark-submit \
--master k8s://https://192.168.99.100:8443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.driver.cores=1 \
--conf spark.driver.memory=512m \
--conf spark.executor.instances=2 \
--conf spark.executor.memory=512m \
--conf spark.executor.cores=1 \
--conf spark.kubernetes.container.image=gcr.io/spark-operator/spark:v2.4.5 \
--conf spark.kubernetes.container.image.pullPolicy=IfNotPresent \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar