Apache Ignite против Apache Storm (подробно)

Apache Ignite и Apache Storm - это две довольно разные технологии во многих аспектах, особенно потому, что у Storm есть один очень специфический вариант использования, а у Ignite есть довольно большой набор инструментов под одной крышей. Насколько я понимаю, ядро ​​Ignite - это хранилище в оперативной памяти. На этом построены вычисления, чувствительные к локализации данных. На этом построены всевозможные крутые «игрушки». То, что меня интересует, - это функциональность потоковой передачи, которая, по сути, представляет собой прослушиватель запросов на изменяющийся кеш в памяти.

Если я установил скользящее окно на один кортеж, Ignite предоставит, как и Storm, функциональность по одному кортежу за раз. Данные хранятся в памяти Ignite. Storm не «хранит» данные в памяти, но кортежи, конечно, также хранятся в памяти. Итак, в обоих случаях у меня есть потоковая передача, и у меня есть данные в памяти, и я могу распределять свои вычисления.

У меня возникло ощущение, что писать программы, выполняющие множество этапов преобразования данных, в Storm было бы проще из-за абстракции обеих технологий. Что об этом сказать?

Второй вопрос: как насчет производительности? Я предполагаю, что расположение данных Ignite может дать ему преимущество. С другой стороны, я думаю, что в Storm было бы лучше распределить несколько шагов (разные болты на всех типах машин), в то время как программу Ignite не так легко разделить.

Если бы я все еще хотел распределить поток (не только по данным, но и по шагам на разных машинах). Думаю, мне придется написать несколько стримеров Ignite, которые общаются через кеши, верно? Это звучало бы сложнее для написания, чем в Storm (возвращая нас к первому вопросу).


person Make42    schedule 26.11.2015    source источник


Ответы (1)


Я чувствую, что писать программы, которые выполняют много шагов по преобразованию данных, может быть проще писать в шторме из-за абстракции обеих технологий. Что об этом сказать?

Вы, наверное, правы в этом. Кажется, что несколько преобразований будет проще в шторм, хотя Ignite также имеет достойную поддержку для этого, передавая вновь созданные кортежи в другой кеш.

А что насчет производительности? Я предполагаю, что расположение данных Ignite может дать ему преимущество. С другой стороны, я думаю, что в Storm было бы лучше распределить несколько шагов (разные болты на всех типах машин), в то время как программу Ignite не так легко разделить.

Из того, что я слышал в сообществе, Ignite должен быть на порядок быстрее, чем Storm.

Если бы я все еще хотел распределить поток (не только по данным, но и по шагам на разных машинах). Думаю, мне придется написать несколько стримеров Ignite, которые общаются через кеши, верно?

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

Это звучало бы сложнее для написания, чем в Storm (возвращая нас к первому вопросу).

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

person Dmitriy    schedule 28.11.2015
comment
1) Не могли бы вы подсказать, где узнать об этой достойной поддержке? 2) Почему Ignite должен быть на порядок быстрее, чем Storm? Я действительно не вижу никаких технических причин. (В это трудно поверить.) - person Make42; 28.11.2015
comment
Под достойной поддержкой я имел в виду именно то, что вы предлагали - потоковую передачу результатов одного потока в другой кеш. - person Dmitriy; 30.11.2015
comment
Что касается производительности, просто проверьте это сами. Разница в производительности часто связана с эффективностью кода, а не обязательно с архитектурой. - person Dmitriy; 30.11.2015
comment
Относительно 1: я имел в виду, какой интерфейс Ignite мне следует использовать. org.apache.ignite.IgniteCache или есть еще более удобный вариант именно для этого варианта использования? - person Make42; 30.11.2015
comment
В Ignite есть отдельный потоковый API, который лучше подходит для вашего варианта использования. Взгляните на интерфейсы IgniteDataStreamer и StreamReceiver. Более подробная информация представлена ​​на странице документации: apacheignite.readme.io/docs/streaming--cep - person Valentin Kulichenko; 01.12.2015