Spark Checkpointing: содержимое, восстановление и идемпотентность

Я пытаюсь понять содержимое контрольной точки и соответствующего восстановления; понимание процесса создания контрольных точек, очевидно, является естественным способом, поэтому я просмотрел следующий список:

Я все еще пытаюсь понять, что идет и остается на диске в конце контрольной точки.

Мое понимание Spark Checkpointing:

Если у вас очень длинные DAG и ваш искровой кластер дает сбой, контрольные точки помогают, сохраняя промежуточное состояние, например. к HDFS. Так, DAG из 50 трансформаций можно сократить до 4-5 трансформаций с помощью контрольных точек. Однако это нарушает DAG.

Контрольные точки в потоковом вещании

Мое задание Spark Streaming имеет микропакет из 5 секунд. Насколько я понимаю, новое задание отправляется JobScheduler каждые 5 секунд, которое вызывает JobGenerator для создания RDD DAG для нового микропакета из DStreamGraph, в то время как получатель тем временем продолжает собирать данные для следующего нового микропакета для следующего цикла . Если я включу чекпойнт, как я понимаю, он будет периодически держать чекпоинт в "текущем состоянии".

Вопрос:

  1. Что это за «государство»? Является ли это комбинацией базового RDD и состояния операторов/преобразований группы обеспечения доступности баз данных только для текущего микропакета? Итак, у меня есть следующее:

    ubatch 0 at T=0 ----> SUCCESS
    ubatch 1 at T=5 ----> SUCCESS
    ubatch 2 at T=10 ---> SUCCESS
    --------------------> Checkpointing kicks in now at T=12
    ubatch 3 at T=15 ---> SUCCESS
    ubatch 4 at T=20
    --------------------> Spark Cluster DOWN at T=23 => ubatch 4 FAILS!!!
    ...
    --------------------> Spark Cluster is restarted at *T=100*
    

    Что конкретно отправляется и остается на диске в результате контрольной точки на T=12? Будет ли он просто хранить текущее состояние операторов группы обеспечения доступности баз данных для ubatch 2?

    а. Если да, то во время восстановления при T=100 последняя доступная контрольная точка будет при T=12. Что происходит с упаковкой 3 в T=15, которая уже была успешно обработана. Обрабатывает ли приложение повторно ubatch 3 и обрабатывает ли здесь идемпотентность? Если да, идем ли мы к источнику потоковой передачи, например. Kafka и перемотать смещение, чтобы иметь возможность воспроизвести содержимое, начиная с ubatch 3?

    б. Если нет, то что именно попадает в каталог контрольной точки при Т=12?


person Sheel Pancholi    schedule 29.05.2019    source источник