Преимущества использования Kafka с Spark над Spark - PullRequest
0 голосов
/ 16 июня 2019

Кафка очень распространена.Так много компаний используют это.Я полностью понимаю, как работают Кафка и Спарк, и у меня есть опыт работы с ними обоими.Что я не понимаю, так это варианты использования.Почему вы используете Kafka со Spark, а не только со Spark?

На мой взгляд, основное использование Kafka - это промежуточная область в конвейере ETL для потоковой передачи данных в реальном времени.

Я предполагаю, что есть кластер источника данных, в котором изначально хранятся данные. Это может быть, например, Vertica, Cassandra, Hadoop и т. Д.

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

Затем существует другой обрабатывающий кластер - кластер Spark, который считывает данные из Kafka, выполняет некоторые преобразования и агрегирование данных изапишите его в конечный пункт назначения.

Если то, что я считаю правильным, я могу просто вырезать Кафку из середины, и в программе Spark, которая работает на кластере Spark, драйвер будет считывать данные из оригинала.источник и распараллелит его для обработки.В чем преимущество размещения Кафки посередине?

Можете ли вы дать мне конкретные примеры использования, когда Кафка полезен, а не просто читает данные в Spark, не проходя через Кафку?

1 Ответ

0 голосов
/ 17 июня 2019

Kafka Streams напрямую решает множество трудных проблем в обработке потока:

  • Обработка по времени (не микропакетная) с задержкой в ​​миллисекундах.
  • Состояниеполная обработка, включая распределенные объединения и агрегации.
  • Удобный DSL.
  • Управление окнами с данными вне порядка с использованием модели, подобной DataFlow.
  • Распределенная обработка и обработка ошибокдопуск с быстрым переключением при сбое.
  • Развертывание без простоев.

Apache Spark можно использовать с Kafka для потоковой передачи данных, но если вы развертываете кластер Spark для единственногоцель этого нового приложения, это определенно большой удар по сложности.

только Кафка и ваше приложение.Он также уравновешивает загрузку обработки при добавлении новых экземпляров вашего приложения или сбоя существующих.И поддерживает локальное состояние таблиц и помогает в восстановлении после сбоя.

Итак, что вы должны использовать?

Низкая задержка и простотаПоддержка времени использования событий также применима к потокам Kafka.Это довольно целенаправленная библиотека, и она очень хорошо подходит для определенных типов задач.Вот почему некоторые из его конструкций могут быть оптимизированы для работы Kafka. Вам не нужно настраивать какой-либо специальный кластер Kafka Streams, и нет менеджера кластера. А если вам нужно сделать простое преобразование Kafka от темы к теме, подсчитайте количество элементов по ключу,обогатите поток данными из другой темы, или запустите агрегацию или только обработку в реальном времени - Kafka Streams для вас.

Если время события не имеет значения, а задержки в диапазоне секунд приемлемы,Первым выбором является Spark. Он стабилен, и практически любой тип системы может быть легко интегрирован.Кроме того, он поставляется с каждым дистрибутивом Hadoop.Кроме того, код, используемый для пакетных приложений, также можно использовать для потоковых приложений, поскольку API одинаков.

Kafka может легко обрабатывать несколько источников в одной теме, но один и тот же в Spark будет сложным для обработки,Но с помощью Кафки это делает очень просто.

Ссылка на ссылку: https://dzone.com/articles/spark-streaming-vs-kafka-stream-1

...