【发布时间】:2019-06-22 05:22:03
【问题描述】:
我的 Spark 作业由于以下错误而失败。
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 34338.0 failed 4 times, most recent failure: Lost task 0.3 in stage 34338.0 (TID 61601, homeplus-cmp-transient-20190128165855-w-0.c.dh-homeplus-cmp-35920.internal, executor 80): java.io.IOException: Failed to rename FileStatus{path=gs://bucket/models/2018-01-30/model_0002002525030015/metadata/_temporary/0/_temporary/attempt_20190128173835_34338_m_000000_61601/part-00000; isDirectory=false; length=357; replication=3; blocksize=134217728; modification_time=1548697131902; access_time=1548697131902; owner=yarn; group=yarn; permission=rwx------; isSymlink=false} to gs://bucket/models/2018-01-30/model_0002002525030015/metadata/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/attempt_20190128173835_34338_m_000000_61601/part-00000
我无法弄清楚缺少什么权限,因为 Spark 作业能够写入临时文件,我假设已经有写入权限。
【问题讨论】:
-
您使用什么 Dataproc 和 GCS 连接器版本?您可以分享用于创建 Dataproc 集群并提交作业的命令吗?您是一次只运行一项工作还是并行运行多个工作?他们写到同一个文件夹吗?这种失败的频率如何?
-
我使用的是 Dataproc 映像 1.2.37,因此无论安装什么版本都可以使用。我正在使用 Airflow 运算符创建集群,并且在集群创建期间我没有传递任何额外的
spark、hive或core属性。我只是使用cloud-sql-proxy初始化配置单元元存储,我正在运行多个作业,但它们确实写入同一个存储桶中的不同位置,如下面的gs://bucket/outputfolder/job1和gs://bucket/outputfolder/job2我在每次运行时都会看到这个错误。 -
请您在主节点上执行此命令:
sudo sh -c 'echo "\nlog4j.logger.com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase=DEBUG" >> /etc/spark/conf/log4j.properties'。它将为记录exception that occurs during rename 的类启用调试日志。您将能够使用GHFS.rename字符串在 StackDriver 中找到此日志消息。 -
所以我发现我在存储桶上只有
Storage Legacy Owner角色。我也添加了Storage Admin角色,这似乎解决了这个问题。谢谢。
标签: apache-spark google-cloud-platform google-cloud-storage google-cloud-dataproc