我在双节点独立群集(v 1.0.1)上运行 Spark 作业。
Spark执行经常卡在Exchange.scala:44
的任务mapPartitions上。
这发生在调用saveAsTextFile
的工作的最后阶段(正如我期望Spark的懒惰执行)。
很难诊断问题,因为我从未在具有本地IO路径的本地模式下遇到此问题,并且有时集群上的作业会按预期完成并具有正确的输出(与本地模式相同的输出)。
这似乎可能与之前的 s3 (~170MB文件)读取有关,因为我在控制台中看到以下日志记录:
DEBUG NativeS3FileSystem - getFileStatus returning 'file' for key '[PATH_REMOVED].avro'
INFO FileInputFormat - Total input paths to process : 1
DEBUG FileInputFormat - Total # of splits: 3
...
INFO DAGScheduler - Submitting 3 missing tasks from Stage 32 (MapPartitionsRDD[96] at mapPartitions at Exchange.scala:44)
DEBUG DAGScheduler - New pending tasks: Set(ShuffleMapTask(32, 0), ShuffleMapTask(32, 1), ShuffleMapTask(32, 2))
我在任务显然挂起/卡住之前看到的最后一次记录是:
INFO NativeS3FileSystem: INFO NativeS3FileSystem: Opening key '[PATH_REMOVED].avro' for reading at position '67108864'
有没有其他人遇到过与在Spark中读取s3相关的非确定性问题?