ТОП-7 сходств и различий между Apache Kafka Streams и Spark Streaming

Kafka, Big Data, Большие данные, архитектура, обработка данных, Spark

Сегодня мы рассмотрим популярные Big Data инструменты обработки потоковых данных: Apache Kafka Streams и Spark Streaming: чем они похожи и чем отличаются. Стоит сказать, что Спарк Стриминг и Кафка Стримс – возможно, наиболее популярные, но не единственные средства обработки информационных потоков Big Data. Для этой цели существует еще множество альтернатив, например, Flink, Storm, Samza, сравнению которых посвящена наша отдельная статья.

Что общего между Apache Kafka Streams и Spark Streaming

Прежде всего перечислим следующие сходства Кафка Стримс и Спарк Стриминг:

  1. надежность и отказоустойчивость – оба инструмента широко используются на практике в качестве инструментов потоковой обработки Big Data в реальных высоконагруженных проектах;
  2. распределенная архитектура, которая обеспечивает масштабируемость и высокую скорость обработки потоковых данных, позволяя выполнять код с помощью параллельных задач, распределенных по узлам кластера [1];
  3. оба решения являются проектами Apache с открытым исходным кодом;
  4. возможность использования разнообразных DevOps-инструментов для развертывания (Puppet, Chef, Ansible, Docker, Mesos, YARN, Kubernetes);
  5. поддержка семантики строго однократной доставки сообщения (exactly once);
  6. возможность использования Apache Mesos в качестве централизованной отказоустойчивой системы управления кластером c целью обеспечения изоляции ресурсов и удобного управления кластерами подчиненных узлов [2]. Хотя стоит отметить, что Спарк Стриминг также может использовать Hadoop YARN для этой цели.
  7. наличие мощных инструментов разработчика: API и DSL (Domain Specific Language) для реализации различных бизнес-задач со сложной логикой, а также интеграции с другими Big Data системами.

7 главных отличий Спарк Стриминг от Кафка Стримс

Тем не менее, несмотря на общее прикладное назначение, для этих Big Data средств потоковой обработки характерны следующие принципиальные различия, обусловленные архитектурой и концепцией каждого из них:

  1. режим обработки информацииKafka Streams оперирует потоками, тогда как Spark Streaming фактически работает с микропакетами, разбивая постоянный поток данных на непрерывную последовательность небольших порций информации (об этом мы подробно писали здесь);
  2. временная задержка (latency) Kafka Streams позволяет обрабатывать данные в режиме онлайн (задержка всего 1 миллисекунда), тогда как Spark Streaming допускает задержки порядка нескольких секунд, что может быть критично в некоторых бизнес-приложениях;
  3. отказоустойчивость Кафка Стримс достигается за счет транзакционности сообщений, а в Спарк Стриминг – с помощью механизам контрольных точек (checkpoints);
  4. «путешествия во времени» – обработка сообщений в определенном временном периоде более развита в Кафка Стримс (кувыркающиеся, скользящие, прыгающие и сеансовые окна), чем в Спарк Стриминг (только скользящие окна) [3];
  5. языковая поддержка – несмотря на наличие мощного API и DSL, Kafka Streams доступен только в Scala и Java, тогда как для Spark Streaming код также поддерживает R и Python [4];
  6. простота развертывания и использования – поскольку Кафка Стримс – это только клиентская библиотека для кластера Кафка, процесс работы с ней начнется гораздо быстрее, чем запуск полнофункционального Спарк Стриминг;
  7. интеграция с другими Big Data системами и внешними хранилищами данныхKafka Streams – это библиотека Кафка, которая ориентирована на работу с информацией, хранящейся в кластере Apache Kafka, т.е. чтение/запись данных осуществляется из/в топик Кафка. Spark Streaming может считывать данные из различных источников (Kafka, Flume, HDFS Hadoop, Amazon S3, OpenStack Swift, NoSQL-СУБД Cassandra, Hive, HBase и т.д.) и отравлять информацию в разнообразные базы данных, файловые хранилища и витрины (дэшборды).
Apache Kafka Streams и Spark Streaming, сравнение инструментов потоковой обработки Big Data
Сравнение Спарк Стриминг и Кафка Стримс

На основании вышеперечисленных сходств и различий Кафка Стримс и Спарк Стриминг, можно сделать объективный выбор в пользу применения того или иного инструмента потоковой обработки Big Data в определенных условиях. Об этом мы расскажем в следующей статье.

Узнайте всю специфику обработки потоковых больших данных с помощью Apache Kafka Streams и Spark Streaming на наших специализированных курсах для руководителей, архитекторов, инженеров, администраторов, аналитиков Big Data и Data Scientist’ов в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

Источники

  1. http://datareview.info/article/obrabotka-potokovyx-dannyx-storm-spark-i-samza/
  2. https://ru.bmstu.wiki/Apache_Mesos
  3. https://meritis.fr/bigdata/spark-streaming-or-kafka-streaming-deep-dive-in-a-hard-choice/
  4. https://www.cuelogic.com/blog/analyzing-data-streaming-using-spark-vs-kafka