将GCS登台目录用于Spark作业(在Dataproc上)

时间:2019-06-20 08:09:36

标签: apache-spark google-cloud-storage yarn google-cloud-dataproc

我正在尝试更改Spark暂存目录,以防止在工作程序反分解时丢失数据(在带有Spark 2.4的google dataproc上)。
我想将HDFS登台切换为Google Cloud Storage登台。

当我运行此命令时:

Save

我遇到此错误:

  

org.apache.spark.SparkException:应用程序application_1560413919313_0056失败2次,原因是退出了appattempt_1560413919313_0056_000002的AM容器,退出代码为-1000

     

尝试失败。诊断:[2019-06-20 07:58:04.462]未找到文件:gs:/my-staging/.sparkStaging/application_1560413919313_0056/pyspark.zip   java.io.FileNotFoundException:找不到文件:gs:/my-staging/.sparkStaging/application_1560413919313_0056/pyspark.zip

Spark作业失败,但是在GCS上创建了spark-submit --conf "spark.yarn.stagingDir=gs://my-bucket/my-staging/" gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py 目录。

对这个问题有任何想法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

首先,必须认识到,登台目录主要用于为执行者(主要是jar和其他档案)登台工件,而不是在作业执行时存储中间数据。如果您要在工人退役后(例如,在机器preemption或缩小规模之后)保留中间作业数据(主要是随机播放数据),则Dataproc Enhanced Flexibility Mode(当前为alpha)帮助您。

您的命令对Dataproc映像版本1.3和1.4都适用。确保您的目标登台存储桶存在,并且Dataproc集群(即该集群作为其运行的service account)具有对该存储桶的读写访问权限。请注意,GCS connector不会为您创建存储桶。