Могу ли я установить временное окно Flink на большое значение? - PullRequest
0 голосов
/ 02 июля 2018

Можно ли установить для временного окна DataStream большое значение, например, 24 часа? Причина этого требования заключается в том, что я хочу сделать статистику данных на основе последних 24 часов трафика клиента на веб-сайт. Таким образом, я могу проверить, есть ли нарушения безопасности.

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

Пропускная способность веб-сайта составляет около 200 Мбит / с. Я думаю, что установка временного окна на большое значение вызовет проблемы с памятью. Должен ли я сохранять результаты статистики каждого временного окна, например, 5 минут, в базу данных?
Затем сделать статистику на основе запроса к базе данных для даты, сгенерированной за последние 24 часа? У меня нет опыта анализа больших данных. Любой совет будет оценен.

1 Ответ

0 голосов
/ 02 июля 2018

Это зависит от типа окна и агрегатов, о которых мы говорим:

  • Окно, в котором не используется выселение: в этом случае Flink будет сохранять только один накопленный результат на физическое окно. Это означает, что для скользящего окна в 10 часов с 1-часовым слайдом, который вычисляет сумму, оно должно быть равно 10 раз. Для падающего окна (независимо от параметров) результат агрегирования сохраняется только один раз. Однако это не вся история: поскольку состояние является ключевым, вы должны умножить все это для каждого отдельного значения поля, используемого в группе, на.

  • Окно с выселением: сохраняет все события, которые были обработаны, но еще не были выселены.

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

  • Количество окон (учитывая, что одно скользящее окно фактически отображается на несколько физических окон).
  • Мощность поля, которое вы используете в группе.

Учитывая все вышесказанное, я бы сказал, что простое 24-часовое окно практически не занимает памяти.

Вы можете проверить соответствующий код здесь .

...