Apache Flink - размер данных контрольной точки увеличивается с течением времени

Я использую семантику времени событий в своем приложении Flink (версия 1.11.1), которое работает в AWS - kinesis analytics. Это приложение имеет источник как поток кинезиса и приемник как Postgres. Интервал контрольной точки составляет 10 секунд, поскольку приемник БД запускается при notifyCheckpointComplete (). Я использую несколько CoProcessFunction вместе с ValueState для подключения разных потоков, прежде чем передать их в Postgres.

Наблюдение заключается в том, что размер данных контрольной точки растет с течением времени, в то время как количество потоков и использование памяти кучи остается постоянным. Загрузка процессора не превышает 30 процентов. Я надеюсь, что размер данных контрольной точки в конечном итоге стабилизируется.

введите описание изображения здесь

Просматривая документацию по flink для State TTL, кажется, что в настоящее время состояние ttl поддерживается только для семантики времени обработки - Состояние времени жизни (TTL)

Каковы перспективы развития приложения Flink на основе времени событий?


person Swapnil Khante    schedule 02.03.2021    source источник


Ответы (1)


Вы все еще можете использовать State TTL. Просто интервал сохранения состояния должен быть выражен в терминах времени настенных часов, а не быть связан с отметками времени в событиях.

Но если вам нужен больший контроль над тем, когда и как очищается состояние, вы можете использовать таймеры в ваших CoProcessFunctions для запуска явных вызовов clear.

person David Anderson    schedule 02.03.2021
comment
Спасибо Дэвиду за быстрый ответ. Однако я использую состояние Ttl с функцией CoProcess, но это не может сильно улучшить размер контрольной точки. После детализации отдельных задач функция timeWindow () в ключевом потоке, похоже, занимает большую часть размера. Как поступать с состоянием в таких сценариях? - person Swapnil Khante; 04.03.2021
comment
См. stackoverflow.com/questions/66472206/. - person David Anderson; 04.03.2021