【问题标题】:spark-submit job by doing exec on a master pod in k8s通过在 k8s 中的主 pod 上执行 exec 来提交作业
【发布时间】:2020-01-25 02:40:37
【问题描述】:

我已经成功地在 Kubernetes 上创建了带有 1 个 master 和 2 个 worker pod 的 spark 集群。 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    1/1     Running   0          66m
spark-worker-686bd57b5d-6s9zb   1/1     Running   0          65m
spark-worker-686bd57b5d-wrqrd   1/1     Running   0          65m

我还可以通过 execing 主 pod 运行内置的 spark 应用程序,例如 pysparkspark-shell -

kubectl exec spark-master-fcfd55d7d-qrpsw -it spark-shell` 

由于我已经有足够的环境,我正在尝试像上面那样运行我的 spark 作业。但它不起作用。火花提交命令如下所示。

#!/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 /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

我在这里做错了什么?我的目的是让这些主节点和工作节点完成工作。

【问题讨论】:

    标签: docker apache-spark kubernetes pyspark exec


    【解决方案1】:

    你可以从错误中读到:

    OCI 运行时执行失败:执行失败:container_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: no such file or directory 部分,这意味着 pod 无法找到 logstreamer.sh 文件。

    脚本logstreamer.sh 需要上传到spark-master pod。 scala-spark-streaming_2.11-1.0.jar 也需要在那里。

    您可以配置PersistenVolume for Storage,这将很有用,因为如果您的 pod 被重新调度,所有未存储在 PV 上的数据都将丢失。

    这里是指向 minikube documentation 的链接,用于持久卷。

    你也可以使用不同的Storage Classes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-10
      • 2022-12-16
      • 1970-01-01
      • 2019-07-15
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多