2

我正在运行一个非常长时间运行的批处理作业。它会产生很多OOM异常。为了最小化这个问题,添加了 checkpoints()

我应该在哪里设置检查点目录?该位置必须可供所有执行者访问。目前,我正在使用一个桶。根据日志文件,我可以看到我的代码已经通过了几个 checkpoint() 调用,但是存储桶是空的

sparkContext.setCheckpointDir("gs://myBucket/checkpointDir/")

根据 CPU 利用率和日志消息,看起来我的工作仍在运行并取得进展。知道检查点数据的火花在哪里吗?

2022-01-22 18:38:06 WARN  DAGScheduler:69 - Broadcasting large task binary with size 4.9 MiB
2022-01-22 18:47:23 WARN  BlockManagerMasterEndpoint:69 - No more replicas available for broadcast_50_piece0 !
2022-01-22 18:47:23 WARN  BlockManagerMaster:90 - Failed to remove broadcast 50 with removeFromMaster = true - org.apache.spark.SparkException: Could not find BlockManagerEndpoint1.
    at org.apache.spark.rpc.netty.Dispatcher.postMessage(Dispatcher.scala:176)

亲切的问候

安迪

4

1 回答 1

0

您是否在代码中手动触发检查点?如果没有,它不会自动触发。请参阅https://programmer.help/blogs/spark_-correct-use-of-checkpoint-in-spark-and-its-difference-from-cache.html检查点通常不是解决 Spark 中 OOM 问题的方法。

于 2022-01-26T06:00:05.360 回答