Apache Beam поверх обработки Apache Kafka Stream

В чем разница между Apache Beam и Apache Kafka в отношении потоковой обработки? Я также пытаюсь понять технические и программные различия.

Пожалуйста, помогите мне понять, поделившись своим опытом.


person Stella    schedule 14.06.2018    source источник
comment
Для запуска кода Beam требуется планировщик кластера. Kafka Streams можно встроить в любое приложение Java. Это одно из основных отличий. Beam может связываться с большим количеством потоков, чем только Kafka   -  person OneCricketeer    schedule 15.06.2018
comment
Планировщик кластера означает бегунов, верно? Поток луча нельзя встроить ни в одно приложение Java? Как мы обнаруживаем, что Beam может взаимодействовать с большим количеством потоков, чем Kafka?   -  person Stella    schedule 15.06.2018
comment
Я не знаю терминологии Beam. AFAIK, вы не можете запустить Beam в автономном приложении Java. Это нужно будет запускать в планировщике, таком как YARN или Mesos. И Beam может читать из Google DataFlow, например, Kafka Streams не может.   -  person OneCricketeer    schedule 15.06.2018


Ответы (2)


Beam - это API, который использует базовый движок потоковой обработки, такой как Flink, Storm и т. Д., Единым способом.

Kafka - это в основном интеграционная платформа, которая предлагает систему обмена сообщениями на основе тем, которые автономные приложения используют для связи друг с другом.

В дополнение к этой системе обмена сообщениями (и API производителя / потребителя) Kafka предлагает API для выполнения потоковой обработки с использованием сообщений в качестве данных и тем в качестве ввода или вывода. Приложения потоковой обработки Kafka - это автономные Java-приложения, которые действуют как обычный потребитель и производитель Kafka (это важно для понимания того, как эти приложения управляются и как рабочая нагрузка распределяется между экземплярами приложений потоковой обработки).

Вкратце, приложения обработки Kafka Stream - это автономные Java-приложения, которые работают вне кластера Kafka, передают данные из кластера Kafka и экспортируют результаты в кластер Kafka. С другими платформами потоковой обработки приложения потоковой обработки запускаются внутри механизма кластера (и управляются этим механизмом), передают информацию из другого места и экспортируют результаты в другое место.

Одно большое различие между Kafka и Beam Stream API заключается в том, что Beam делает различие между ограниченными и неограниченными данными внутри потока данных, тогда как Kafka не имеет такого значения. Таким образом, обработка ограниченных данных с помощью Kafka API должна выполняться вручную с использованием временных / сеансовых окон для сбора данных.

person Guillaume Braibant    schedule 25.10.2018
comment
тогда как Kafka не имеет значения - я чувствую, что это не обсуждает KTables в Kafka Streams API - person OneCricketeer; 01.11.2018
comment
Извините, не могли бы вы подробнее рассказать о том, как обработка ограниченных данных с помощью Kafka API должна выполняться вручную с использованием временных / сеансовых окон для сбора данных. В настоящее время я использую Beam, и хотя технически, как вы говорите, Beam делает разницу между ограниченными и неограниченными данными, он влияет только на то, какие типы ввода-вывода ввода и вывода вы можете использовать, но код обработки буквально одинаков в обоих случаи. Однако как с Кафкой вообще можно было бы иметь ограниченный источник? Разве это не входы Kafka Stream - ну, потоки Kafka? - person Timur; 10.06.2019

Beam - это программный API, но не система или библиотека, которые вы можете использовать. Доступно несколько бегунов Beam, реализующих Beam API.

Kafka - это платформа потоковой обработки, которая поставляется с Kafka Streams (также известной как Streams API), библиотекой потоковой обработки Java, созданной для чтения данных из тем Kafka и записи результатов обратно в темы Kafka.

person Matthias J. Sax    schedule 15.06.2018
comment
Спасибо. Я видел, что у Beam нет специального Streams API, такого как Kafka Streams API. Мне интересно, как тогда он передает данные? - person Stella; 15.06.2018
comment
Также обратите внимание, что Beam предлагает унифицированный API для пакетной и потоковой обработки. Но, как я уже сказал, это только API - фактическая реализация API - это так называемые runners - Beam сам по себе не обрабатывает никаких данных; это не система или библиотека. - person Matthias J. Sax; 15.06.2018
comment
Почему не может быть бегуна Apache Beam для обработки Kafka Stream? - person user1870400; 20.09.2018
comment
Может быть, если кто-то реализует. AFAIK, некоторые существующие бегуны поддерживают Kafka как источник или приемник через Beam. Однако мне неизвестен раннер, основанный на библиотеке потоковой обработки Kafka, Kafka Streams. - person Matthias J. Sax; 20.09.2018