【问题标题】:Spark submit fails in k8s Cluster在 k8s 集群中 Spark 提交失败
【发布时间】:2020-08-20 17:43:25
【问题描述】:

我正在尝试使用以下命令将 Spark 应用程序提交到 minikube k8s 集群(使用的 Spark 版本:2.4.3):

spark-submit \
--master <K8S_MASTER> \
--deploy-mode cluster \
--conf spark.executor.instances=2 \
--conf spark.kubernetes.container.image=<my docker image> \
--conf spark.kubernetes.driver.pod.name=spark-py-driver \
--conf spark.executor.memory=2g \
--conf spark.driver.memory=2g \
local:///home/proj/app/run.py <arguments>

请注意,python 脚本 run.py 存在于我的 docker 镜像中的同一路径中 一旦我完成 Spark 提交,Spark 作业就会启动,并且驱动程序作业会被终止。我只能在 Driver pod 中看到以下日志

[FATAL tini (6)] exec driver-py failed: No such file or directory

我已经通过在 docker 映像上执行 docker run 验证了 pyspark 作业的执行,并且能够看到上面的 python 代码被执行。

这些是失败的驱动程序 pod 的事件

事件:

  Type     Reason       Age   From               Message
  ----     ------       ----  ----               -------
  Normal   Scheduled    52m   default-scheduler  Successfully assigned ***-develop/run-py-1590847453453-driver to minikube
  Warning  FailedMount  52m   kubelet, minikube  MountVolume.SetUp failed for volume "spark-conf-volume" : configmap "run-py-1590847453453-driver-conf-map" not found
  Normal   Pulled       52m   kubelet, minikube  Container image "******************:latest" already present on machine
  Normal   Created      52m   kubelet, minikube  Created container spark-kubernetes-driver
  Normal   Started      52m   kubelet, minikube  Started container spark-kubernetes-driver

【问题讨论】:

  • 你能分享你的 docker 文件吗?看起来您没有在容器中为您的应用程序安装卷。

标签: apache-spark kubernetes pyspark


【解决方案1】:

我正在使用我的组织中的基本图像之一。但是关于挂载的问题只是一个警告,之后就成功分配了 pod。

FROM <project_repo>/<proj>/${SPARK_ALPINE_BUILD}
ENV SPARK_OPTS --driver-java-options=-Dlog4j.logLevel=info
ENV SPARK_MASTER "spark://spark-master:7077"

ADD https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar $SPARK_HOME/jars
ADD https://repo1.maven.org/maven2/com/datastax/spark/spark-cassandra-connector_2.11/2.3.2/spark-cassandra-connector_2.11-2.3.2.jar $SPARK_HOME/jars
USER root

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /home/<proj>/app
# copy files
COPY src/configs ./configs
COPY src/dependencies ./dependencies
COPY src/jobs ./jobs
COPY src/run.py ./run.py
COPY run.sh ./run.sh 
COPY src/requirements.txt . 

# install packages here 
RUN set -e; \
  pip install --no-cache-dir -r requirements.txt;

【讨论】:

  • 仅供将来参考 - 如果您提供更多信息,请不要提供其他答案。编辑您的原始帖子以添加更多信息。
【解决方案2】:

使用的 spark 提交不是 3.0.0 版本。您还需要将使用 spark 提交的 spark 安装更改为 3.0.0 版本。

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2022-08-18
    • 2019-04-17
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    相关资源
    最近更新 更多