Как оптимизировать задержку в работе Spark Streaming при чтении данных из Kafka? - PullRequest
1 голос
/ 22 апреля 2020

Описание проблемы

Я хочу ускорить мой потоковый конвейер. Пока что партия обрабатывается за ~ 10 секунд. Также через 2-3 месяца я ожидаю увеличение количества сообщений x3.

Описание конвейера

У меня есть задание Spark Streaming, которое считывает данные из Kafka topi c, обрабатывает их ( десериализовать и обогатить набор данных) и записать вывод в выходные данные topi c.

конфигурация Kafka

  • 1 topi c
  • 75 разделов на топи c
  • частота генерации сообщений составляет 10 миллионов сообщений в минуту (~ 165000 в секунду) в одном разделе
  • формат сообщения - avro (под avro - событие json с 12-15 полей)

Конфигурация Spark

  • 75 исполнителей (в соответствии с рекомендациями по отображению - 1 раздел Kafka для 1 исполнителя Spark)
  • время запуска - 1 минута

Что уже сделано?

  • Я попросил увеличить количество разделов в Кафке с 75 до 500 (невозможно)
  • Я предложил создать новую топи c с 500 па rtitions и настройка репликации с текущего topi c с 75 разделами на новый (это также невозможно)
  • Я пытался играть с размером сообщения (max.partition.fetch.bytes) - не получилось очень поможет, так как Spark не волнует, какой размер сообщения, если он не может распараллелить работу должным образом

Так что я ищу способ распараллелить работу на стороне Spark. Есть идеи, что еще можно сделать здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...