Как избежать ошибки "Неверный каталог контрольных точек" в Apache Spark?

Я использую Amazon EMR + S3 в качестве своей инфраструктуры искрового кластера. Когда я запускаю задание с периодическими контрольными точками (у него длинное дерево зависимостей, поэтому усечение по контрольным точкам обязательно, каждая контрольная точка имеет 320 разделов). Задание останавливается на полпути, что приводит к исключению:

(On driver)
org.apache.spark.SparkException: Invalid checkpoint directory: s3n://spooky-checkpoint/9e9dbddf-e5d8-478d-9b69-b5b966126d3c/rdd-198
    at org.apache.spark.rdd.CheckpointRDD.getPartitions(CheckpointRDD.scala:54)
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219)
...
(On Executor)
15/04/17 22:00:14 WARN StorageService: Encountered 4 Internal Server error(s), will retry in 800ms
15/04/17 22:00:15 WARN RestStorageService: Retrying request following error response: PUT '/9e9dbddf-e5d8-478d-9b69-b5b966126d3c/rdd-198/part-00025' -- ResponseCode: 500, ResponseStatus: Internal Server Error
...

После ручной проверки файлов контрольных точек я обнаружил, что /9e9dbddf-e5d8-478d-9b69-b5b966126d3c/rdd-198/part-00025 действительно отсутствует на S3. Поэтому мой вопрос: если он отсутствует (возможно, из-за сбоя AWS), почему не обнаружил искру сразу же в процессе контрольной точки (чтобы его можно было повторить), вместо того, чтобы выдать неисправимую ошибку, указывающую, что дерево зависимостей уже потеряно? И как избежать повторения этой ситуации?

0 ответов

Другие вопросы по тегам