Может ли Flink обрабатывать ~ 50 ГБ состояния для одной таблицы / окна? - PullRequest
1 голос
/ 28 октября 2019

Я создаю потоковую аналитику, для которой требуется ~ 50 ГБ исходного состояния в памяти для одной таблицы. ~ 50 ГБ - это объем ОЗУ, используемый при загрузке состояния в Scala HashMap [String, String].

Может ли Flink обрабатывать состояние ~ 50 ГБ для одной таблицы, которая увеличивается со временем?

Смогу ли я выполнять поиск и обновления этой таблицы в потоковом режиме?

Примечания:

  • Я не могу изменить типы на что-то меньшее.
  • Состояние используется в качестве поиска для сопоставления одной строки с другой строкой.
  • Потребуется около трех лет, чтобы штат удвоился до 100 ГБ (агрессивная оценка, поскольку текущему состоянию потребовалось десять лет, чтобы произвести).
  • В этом блоге Flink утверждается, что размер состояния не должен быть проблемой, но я подумал, что должен перепроверить, прежде чем его раскрутить. Терабайты государства упоминаются.

1 Ответ

3 голосов
/ 28 октября 2019

50-100 ГБ для одной таблицы в состоянии Flink - не проблема.

Но, чтобы быть ясным, когда мы говорим о том, что во Flink имеется огромное количество состояний (например, терабайт), о которых мы говоримсостояние ключа, которое обрабатывается многими параллельными задачами. Да, у вас может быть одна очень большая таблица, но у любого данного экземпляра будет только подмножество строк этой таблицы.

Обратите внимание, что вам нужно будет выбрать бэкэнд состояния - либо кучуоснованный на состоянии бэкэнд, который будет сохранять состояние в памяти как объекты в куче JVM или бэкэнд состояния RocksDB, который будет сохранять состояние в виде сериализованных байтов на диске с кэшем в памяти.

...