Spark Kubernetes - spark-submit --archives开关不会将zip复制到spark-driver pod

wvyml7n5  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(109)

我认为这可能是在集群模式下运行kubernetes时spark-submit --archives开关中的一个bug。在本例中,data.zip被复制到客户端上的/tmp文件夹中,而不是spark-driver pod中。
spark-driver pod尝试解压缩zip文件,但找不到它。
从客户端运行一个简化的示例命令以提交到EKS群集:

${SPARK_HOME}/bin/spark-submit \
  --name spark-pi \
  --master k8s://https://xyz.gr7.us-east-1.eks.amazonaws.com \
  --deploy-mode cluster \
  --class org.apache.spark.examples.SparkPi \
  --conf spark.executor.instances=2 \
  --conf spark.kubernetes.namespace=spark \
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
  --conf spark.kubernetes.container.image=myrepo.local:5000/spark-py:v3.3.1-j14 \
  --conf spark.kubernetes.file.upload.path=/tmp \
  --archives data.zip \
  --verbose \
  local:///opt/spark/examples/jars/spark-examples_2.12–3.0.1.jar

spark-submit日志摘录:

22/11/03 10:57:38 INFO KubernetesUtils: Uploading file: /home/user/gitrepos/k8s-spark/data.zip to dest: /tmp/spark-upload-8a7d669e-3ca2-4a8a-b37a-51686f5d3395/data.zip...
22/11/03 10:57:39 INFO LoggingPodStatusWatcherImpl: State changed, new state: 
         pod name: spark-pi-6cb5ce843dff6023-driver

日志摘录自Spark驱动器pod:

Unpacking an archive file:/tmp/spark-upload-8a7d669e-3ca2-4a8a-b37a-51686f5d3395/data.zip from /tmp/spark-upload-8a7d669e-3ca2-4a8a-b37a-51686f5d3395/data.zip to /opt/spark/work-dir/./data.zip
Exception in thread "main" java.io.FileNotFoundException: /tmp/spark-upload-8a7d669e-3ca2-4a8a-b37a-51686f5d3395/data.zip

相反,该文件被复制到客户端上的文件夹列表中。它没有将其复制到spark-driver pod中,至少没有以自动解包可以找到它的方式复制。

$ ls /tmp/spark-upload-8a7d669e-3ca2-4a8a-b37a-51686f5d3395/
data.zip

注意:我知道还有其他方法,但是我尽量避免将任何数据文件打包到docker映像中或使用共享文件系统,而只让spark-submit调用来处理这个问题。
我的期望是spark-driver pod可以找到并提取一个zip文件,该文件是通过对spark-submit的--archives开关调用指定的
我是否误用了存档功能,或者这是一个错误?

8cdiaqws

8cdiaqws1#

spark.kubernetes.file.upload.path必须是分布式/共享文件系统(HDFS/S3/NAS/etc.)上的路径。spark-submit进程将文件上载到该路径,驱动程序和执行器将尝试从该路径下载文件。看起来您正在引用某个本地/tmp文件夹。

相关问题