В моем приложении Flink я полагаюсь на состояние Запроса Flink для запроса результатов вычислений.
К сожалению, через некоторое время после запуска приложения и получения множества вычислительных запросов клиент запросов умирает (он больше не отвечает). Я долго отлаживал это, но не могу понять, почему это происходит.
У вас есть какие-нибудь подсказки, почему QueryableStateClient
умирает?
Является ли RocksDBStateBackend
решением проблемы? RocksDBStateBackend
предпочтительнее в производстве, хотя, возможно, немного медленнее?
Мой стек:
Flink 1.6.2
- Мой уровень параллелизма / потоков> 1
- Я использую бэкэнды состояний
MemoryStateBackend
или FsStateBackend
. Я еще не тестировал с RocksDBStateBackend
. Я знаю следующее предупреждение, но предположительно RocksDBStateBackend
медленнее?
Шаблоны чтения-изменения-записи небезопасны и могут привести к сбою запрашиваемого сервера состояний из-за одновременных изменений. RocksDBStateBackend защищен от этих проблем.
- С
FsStateBackend
я попробовал как локальную файловую систему, так и hdfs. Оба терпят неудачу.
- Я также спросил Flink: возможно ли удалить состояние Queryable через X раз? , чтобы выяснить, является ли проблема «слишком большим» состоянием.