Docker 通过在k8s中的主吊舱上执行exec来触发提交作业
我已经成功地在kubernetes上创建了spark cluster,有1个master和2个worker吊舱。spark v2.4.3在k8s上运行Java 8和scala 2.11.12,kubectl v1.16.0和minikube v1.4.0 对于详细的Docker 通过在k8s中的主吊舱上执行exec来触发提交作业,docker,apache-spark,kubernetes,pyspark,exec,Docker,Apache Spark,Kubernetes,Pyspark,Exec,我已经成功地在kubernetes上创建了spark cluster,有1个master和2个worker吊舱。spark v2.4.3在k8s上运行Java 8和scala 2.11.12,kubectl v1.16.0和minikube v1.4.0 对于详细的kubectl get pods显示如下- NAME READY STATUS RESTARTS AGE spark-master-fcfd55d7d-qrpsw
kubectl get pods
显示如下-
NAME READY STATUS RESTARTS AGE
spark-master-fcfd55d7d-qrpsw 1/1 Running 0 66m
spark-worker-686bd57b5d-6s9zb 1/1 Running 0 65m
spark-worker-686bd57b5d-wrqrd 1/1 Running 0 65m
我还可以通过exec
运行内置的spark应用程序,例如pyspark
和spark shell
kubectl exec spark-master-fcfd55d7d-qrpsw -it spark-shell`
kubectl exec spark-master-fcfd55d7d-qrpsw /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh
因为我已经有足够的环境,我正试图运行我的火花工作就这样上面。但它不起作用。spark submit命令如下所示
#!/usr/bin/env bash
spark-submit \
--class com.cloudian.spark.main.RequestInfoLogStreamer \
/Users/atekade/IdeaProjects/scala-spark-streaming/target/scala-2.11/scala-spark-streaming_2.11-1.0.jar
然后将.sh
脚本提交给主pod-
kubectl exec spark-master-fcfd55d7d-qrpsw -it spark-shell`
kubectl exec spark-master-fcfd55d7d-qrpsw /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh
但这给了我一个错误-
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"/Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh\": stat /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh: no such file or directory": unknown
command terminated with exit code 126
我做错了什么?我的目的是让这些主节点和工作节点完成工作 从错误中可以看出: OCI runtime exec失败:exec失败:容器\u linux.go:345:启动容器进程导致“exec:\”/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh\”:stat/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh:无此类文件或目录:未知 命令终止,退出代码为126 我们最感兴趣的是部分
/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh:没有这样的文件或目录
,这意味着pod无法找到logstreamer.sh
文件
脚本logstreamer.sh
需要上传到spark master
pod。
另外,scala-spark-streaming_2.11-1.0.jar也需要在那里
您可以配置,这将非常有用,因为如果您的pod将被重新调度,所有未存储在PV上的数据都将丢失
这里是指向永久卷的链接
您也可以使用不同的