В Apache Кафка против Апачи шторм
Apache Kafka: распределенная система обмена сообщениями
Apache Storm: Обработка Сообщений В Реальном Времени
Как мы можем использовать обе технологии в конвейере данных в реальном времени для обработки данных о событиях?
с точки зрения конвейера данных в реальном времени оба, как мне кажется, выполняют одинаковую работу. Как мы можем использовать обе технологии на конвейере данных?
6 ответов:
вы используете Apache Kafka как распределенную и надежную очередь, которая может обрабатывать большие объемы данных и позволяет передавать сообщения из одной конечной точки в другую.
Шторм-это не очередь. Это система, которая имеет распределенные возможности обработки в реальном времени, то есть вы можете выполнять все виды манипуляций с данными в реальном времени параллельно.
общий поток этих инструментов (как я его знаю) идет следующим образом:
в режиме реального времени-система --> Кафка --> шторм --> производительность --> Би(необязательно)
таким образом, у вас есть приложение в реальном времени, обрабатывающее большие объемы данных, отправляет его в очередь Кафки. Шторм извлекает данные из Кафки и применяет некоторые необходимые манипуляции. На этом этапе вам обычно нравится получать некоторые преимущества от этих данных, поэтому вы либо отправляете их в какую-то базу данных Nosql для дополнительных вычислений BI, либо вы можете просто запросить этот NoSql из любой другой системы.
Кафка и Шторм имеют несколько иную цель:
Кафка является распределенным брокером сообщений, который может обрабатывать большое количество сообщений в секунду. Он использует парадигму публикации-подписки и опирается на темы и разделы. Кафка использует Zookeeper для обмена и сохранения состояния между брокерами. Таким образом, Кафка в основном отвечает за передачу сообщений с одной машины на другую.
шторм является масштабируемым, отказоустойчивым, аналитическим в реальном времени система (думаю как Hadoop в реальном времени). Он потребляет данные из источников (носиков) и передает их в трубопровод (болты). Вы можете объединить их в топологии. Таким образом, Storm-это в основном вычислительная единица (агрегация, машинное обучение).
но вы можете использовать их вместе: например, ваше приложение использует kafka для отправки данных на другие серверы, которые используют storm для выполнения некоторых вычислений на нем.
Я знаю, что это более старый поток, и сравнения Apache Kafka и Storm были действительны и правильны, когда они были написаны, но стоит отметить, что Apache Kafka сильно эволюционировал за эти годы, и с версии 0.10 (апрель 2016 года) Kafka включил API потоков Kafka, который предоставляет возможности обработки потоков без необходимости какого-либо дополнительного программного обеспечения, такого как Storm. Kafka также включает в себя API Connect для подключения к различным источникам и приемникам (адресатам) данные.
объявление блог - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
текущая документация Apache -https://kafka.apache.org/documentation/streams/
в 0.11 Kafka функциональность обработки потока была дополнительно расширена, чтобы обеспечить ровно один раз семантику и Операции.
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
как это работает
Кафка - чтобы обеспечить поток в реальном времени
шторм - для выполнения некоторых операций над этим потоком
вы можете взглянуть на проект GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js.
(D3js-это библиотека графовых представлений)
идеальный случай:
Realtime application -> Kafka -> Storm -> NoSQL -> d3jsэтот репозиторий основан на:
Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
Как всем объяснить вам, что Apache Kafka: это непрерывная очередь сообщений
Apache Storm: это инструмент непрерывной обработки
здесь в этом аспекте Кафка получит данные с любого веб-сайта,такого как FB, Twitter, используя API, и эти данные обрабатываются с помощью Apache Storm, и вы можете хранить обработанные данные в любых базах данных, которые вам нравятся.
https://github.com/miguno/kafka-storm-starter
просто следуйте за ним вы будете получить некоторые идеи!--1-->
когда у меня есть прецедент, который требует от меня визуализации или оповещения о шаблонах (подумайте о тенденциях twitter), продолжая обрабатывать события, у меня есть несколько шаблонов.
NiFi позволит мне обрабатывать событие и обновлять постоянное хранилище данных с низкой(er) пакетной агрегацией с очень, очень небольшим пользовательским кодированием.
Storm (много пользовательского кодирования) позволяет мне почти в реальном времени получить доступ к трендовым событиям.
Если я могу ждать много секунд, то я могу выйти из Кафки, в hdfs (паркет) и процесс.
Если мне нужно знать в считанные секунды, мне нужен НИФИ, и, возможно, даже шторм. (Подумайте о мониторинге тысяч земных станций, где мне нужно увидеть небольшие погодные условия региона для предупреждений о торнадо).
Comments