Как реализована контрольная точка Flink?

Анализ и ответ

Введение в контрольную точку

Механизм отказоустойчивости Checkpoint является краеугольным камнем надежности Flink. Он может гарантировать, что в случае сбоя оператора по какой-либо причине (например, ненормальный выход) кластер Flink может восстановить состояние всего графа потока приложения до определенного состояния перед сбой, обеспечивающий согласованность состояния графа потока Apply. Принцип механизма Checkpoint Флинка исходит из алгоритма «алгоритма Чанди-Лампорта» .

Барьеры

Основным элементом распределенного моментального снимка Flink являются барьеры потока, которые вводятся в поток и текут вместе с потоком как часть потока. Барьеры делят записи потока данных на записи, входящие в текущий снимок, и записи, входящие в следующий снимок.Каждый барьер несет идентификатор моментального снимка, а данные моментального снимка помещаются перед барьерами. Барьеры очень легкие и не прерывают течение ручьев. В то же время одновременно будет работать несколько контрольно-пропускных пунктов.

Барьер вводится в источник данных параллельного потока.Барьеры, внедряемые в снимок n (называемые Sn), представляют собой позицию в источнике данных, а в Kafka — это смещение последней записи определенного раздела. Об этом положении Sn будет сообщено координатору контрольной точки JM (функция координации контрольной точки). Барьеры движутся вниз по течению вместе с потоком, и когда промежуточный оператор получает контрольную точку n барьеров из всех своих входных потоков, оператор отправляет барьер своим нижестоящим операторам. Как только будет достигнут конец DAG, приемник сообщит дескриптор состояния этого потока координатору контрольных точек JM. Когда приемник получит барьер контрольной точки n от всех своих входных потоков, Jm вернет завершенные мета-контрольные точки, а затем Контрольная точка будет помечена как завершенная. Состояние сохраняется в соответствующем бэкэнде состояния.

выравнивание барьера

Когда у оператора есть несколько входных потоков, барьер контрольной точки n будет выровнен, то есть поступившие потоки будут кэшироваться в буфере для ожидания других недостигнутых потоков, и как только все потоки поступят, они будут транслироваться в нисходящем направлении, ровно один раз. Используя эту функцию хотя бы один раз, некоторые данные будут обрабатываться повторно, поскольку они не будут выровнены.

структура данных контрольной точки

Когда оператор получает все барьеры контрольной точки n, отправленные вверх по течению, он делает снимок состояния и сохраняет состояние смещения и другие значения. По умолчанию оно сохраняется в памяти Jm. Поскольку оно может быть относительно большим, вы можете В статус-бэкенде рекомендуется в генерации ставить hdfs.

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

Отразить и расширить

Внутренняя реализация механизма отказоустойчивости Flink (контрольная точка)

Когда запускается каждое приложение, которому требуется контрольная точка, JobManager Flink создает для него CheckpointCoordinator (координатор контрольной точки), и CheckpointCoordinator несет полную ответственность за создание моментального снимка приложения.

CheckpointCoordinator (координатор контрольных точек), CheckpointCoordinator несет полную ответственность за создание снимков этого приложения.

CheckpointCoordinator (координатор контрольных точек) периодически отправляет барьеры всем исходным операторам потокового приложения.

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

После того, как нижестоящий оператор получит барьер, он приостановит свой собственный процесс обработки данных, затем сделает снимок своего собственного связанного состояния и сохранит его в назначенном постоянном хранилище и, наконец, сообщит о своем собственном статусе снимка координатору CheckpointCoordinator и в в то же время сообщает о своем статусе снимка всем нижестоящим операторам. Дочерний элемент передает барьер и возобновляет обработку данных.

Каждый оператор непрерывно делает снимки в соответствии с шагом 3 и транслирует их вниз по течению до тех пор, пока барьер не будет пройден оператором приемника и снимок не будет завершен.

Когда CheckpointCoordinator получает отчеты от всех операторов, он считает, что снимок этого цикла успешно сделан; в противном случае, если он не получает отчеты всех операторов в течение указанного времени, он считает, что снимок этого цикла не удался.

RocksDB реализует принцип инкрементной контрольной точки:

Контрольная точка хранилища RocksDb предоставляется в серверной части состояния, и это единственный метод, предоставляемый Flink, который может реализовывать дополнительные контрольные точки. Принцип заключается в том, что каждый раз, когда создается контрольная точка, создается файл sst (он не будет повторно изменен), и он сравнивается с предыдущим файлом, а вновь добавленный файл sst может быть загружен каждый раз, что вероятно, так и есть.

Meow Interview Assistant: универсальное решение для вопросов на собеседовании. Вы можете выполнить поиск в апплете WeChat [Meow Interview Assistant]  или воспользоваться [Meow Brush Вопросы] ->  Бесплатные вопросы Interview Assistant . Если у вас есть хорошие знания или навыки для прохождения собеседований, с нетерпением ждем вашего ответа!

Supongo que te gusta

Origin blog.csdn.net/jjclove/article/details/127406818
Recomendado
Clasificación