Разница между Apache NiFi и StreamSets

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


person Goutam    schedule 27.04.2016    source источник


Ответы (4)


Сурадж,

Отличный вопрос.

Я отвечаю как член комитета по управлению проектами Apache NiFi с открытым исходным кодом и как человек, увлеченный областью управления потоками данных.

Я участвовал в проекте NiFi с момента его запуска в 2006 году. Мои знания о Streamsets относительно ограничены, поэтому я позволю им высказаться за него, как и они.

Главное, что нужно понять, это то, что NiFi был создан для того, чтобы действительно хорошо выполнять одну действительно важную вещь, а именно «Управление потоком данных». Его дизайн основан на концепции под названием «Программирование на основе потока», о которой вы, возможно, захотите прочитать и обратиться к вашему проекту »https://en.wikipedia.org/wiki/Flow-based_programming '

Уже существует множество систем, которые производят данные, такие как датчики и другие. Существует множество систем, ориентированных на обработку данных, таких как Apache Storm, Spark, Flink и другие. И, наконец, есть много систем, которые хранят данные, такие как HDFS, реляционные базы данных и так далее. NiFi полностью сосредоточен на задаче подключения этих систем и предоставлении пользовательского опыта и основных функций, необходимых для этого.

Каковы некоторые из этих ключевых функций и варианты дизайна, которые сделали это эффективным:

1) Интерактивное управление и контроль

Задача того, кто пытается соединить системы, - иметь возможность быстро и эффективно взаимодействовать с постоянными потоками данных, которые они видят. Пользовательский интерфейс NiFi позволяет вам делать именно то, что по мере прохождения данных вы можете добавлять функции для работы с ними, разделять копии данных, чтобы опробовать новые подходы, настраивать текущие настройки, просматривать недавнюю и историческую статистику, полезную встроенную документацию и многое другое. Для сравнения, почти все другие системы имеют модель, ориентированную на проектирование и развертывание, что означает, что вы вносите ряд изменений, а затем развертываете их. Эта модель хороша и может быть интуитивно понятной, но для задачи управления потоками данных это означает, что вы не получаете интерактивного изменения посредством обратной связи об изменениях, которая так важна для быстрого создания новых потоков или для безопасного и эффективного исправления или улучшения обработки существующих потоков данных.

2) Происхождение данных

Уникальной способностью NiFi является его способность генерировать детализированные и мощные данные для отслеживания того, откуда поступают ваши данные, что с ними делается, куда они отправляются и когда это делается в потоке. Это важно для эффективного управления потоками данных по ряду причин, но для тех, кто находится на ранних этапах исследования и работает над проектом, самое важное, что это дает, - это потрясающая гибкость отладки. Вы можете настроить свои потоки и позволить вещам работать, а затем использовать источник, чтобы на самом деле доказать, что он сделал именно то, что вы хотели. Если что-то произошло не так, как вы ожидали, вы можете исправить поток и воспроизвести объект, а затем повторить. Действительно полезно.

3) Специально построенные репозитории данных

Готовый опыт NiFi предлагает очень высокую производительность даже на очень скромном оборудовании или в виртуальных средах. Это связано с дизайном потокового файла и репозитория контента, который дает нам высокую производительность, но транзакционную семантику, которую мы хотим, когда данные проходят через поток. Репозиторий потоковых файлов представляет собой простую реализацию журнала с упреждающей записью, а репозиторий содержимого обеспечивает неизменяемое хранилище содержимого с контролем версий. Это, в свою очередь, означает, что мы можем «копировать» данные, только когда-либо добавляя новый указатель (а не копируя байты), или мы можем преобразовывать данные, просто читая из оригинала и записывая новую версию. Опять же очень эффективно. Добавьте к этому сведения о происхождении, о которых я упоминал минуту назад, и это просто действительно мощная платформа. Еще одна важная вещь, которую необходимо понять, - это то, что в бизнесе по соединению систем вы не всегда можете диктовать такие вещи, как размер задействованных данных. API NiFi был создан с учетом этого факта, поэтому наш API позволяет процессорам выполнять такие действия, как прием, преобразование и отправка данных, без необходимости загружать полные объекты в память. Эти репозитории также означают, что в большинстве потоков большинство процессоров даже не трогают контент. Тем не менее, вы можете легко увидеть из пользовательского интерфейса NiFi, сколько байтов на самом деле читается или записывается, поэтому вы снова получаете действительно полезную информацию для установления и наблюдения за вашими потоками. Эта конструкция также означает, что NiFi может естественным образом поддерживать противодавление и сброс давления, и это действительно важные функции для системы управления потоками данных.

Ранее люди из компании Streamsets упоминали, что NiFi ориентирован на файлы. Я не совсем уверен, в чем разница между файлом, записью, кортежем, объектом или сообщением в общих чертах, но на самом деле, когда данные находятся в потоке, это `` вещь, которой нужно управлять и доставлен'. Это то, что делает NiFi. Есть ли у вас много действительно высокоскоростных крошечных вещей или у вас есть большие вещи, и пришли ли они из живого аудиопотока из Интернета или из файла, находящегося на вашем жестком диске, не имеет значения. Как только он окажется в потоке, пора управлять им и доставить его. Это то, что делает NiFi.

Компания Streamsets также упомянула, что NiFi не имеет схемы. Совершенно верно, что NiFi не принудительно преобразовывает данные из того, чем они были изначально, в какой-то специальный формат NiFi, и нам не нужно преобразовывать их обратно в какой-либо формат для последующей доставки. Было бы очень прискорбно, если бы мы сделали это, потому что это означает, что даже самые тривиальные случаи будут иметь проблемы с производительностью, и, к счастью, у NiFi такой проблемы нет. Если бы мы пошли по этому пути, это означало бы, что обработка различных наборов данных, таких как мультимедиа (изображения, видео, аудио и т. Д.), Была бы сложной, но мы на правильном пути, и NiFi используется для подобных вещей постоянно.

Наконец, если вы продолжите свой проект и обнаружите, что есть вещи, которые вы хотели бы улучшить или внести свой код, мы будем рады вашей помощи. На странице https://nifi.apache.org вы можете быстро найти информацию о том, как подавать заявки, отправлять исправления, отправлять по электронной почте список рассылки и более.

Вот несколько забавных недавних проектов NiFi, которые стоит проверить: https://www.linkedin.com/pulse/nifi-ocr-using-apache-read-childrens-books-jeremy-dyer https://twitter.com/KayLerch/status/721455415456882689

Удачи в классном проекте! Если у вас есть какие-либо вопросы, список рассылки [email protected] будет рад вам помочь.

Спасибо Джо

person Joe Witt    schedule 28.04.2016
comment
ОБНОВЛЕНИЕ: Nifi 1.3 имеет намного больше функций с концепциями записи, которые имеют реестр схем, а концепция записи в основном представляет собой представление формата с такими плагинами, как AvroReader, CSVReader, JSONReader, для плавного перехода от формата к формату. ... Nifi 1.6 также имеет больше функций без необходимости разбивать тысячи файлов на отдельные файлы. Просто кляксы мультифайлов в двоичном формате. Ускоряет процесс. - person Dexter; 23.05.2018

И Apache NiFi, и StreamSets Data Collector - это инструменты с открытым исходным кодом под лицензией Apache.

У Hortonworks есть коммерчески поддерживаемый вариант под названием Hortonworks DataFlow (HDF).

Хотя оба имеют много общего, например, веб-интерфейс, оба используются для приема данных, есть несколько ключевых отличий. Они также оба состоят из процессоров, связанных вместе для выполнения преобразований, сериализации и т. Д.

Процессоры NiFi ориентированы на файлы и не имеют схемы. Это означает, что часть данных представлена ​​FlowFile (это может быть реальный файл на диске или какой-то блок данных, полученный где-то еще). Каждый процессор несет ответственность за понимание содержания данных, чтобы работать с ними. Таким образом, если один процессор понимает формат A, а другой - только формат B, вам может потребоваться выполнить преобразование формата данных между этими двумя процессорами.

NiFi может работать автономно или как кластер с использованием собственной встроенной системы кластеризации.

Однако сборщик данных StreamSets (SDC) использует подход, основанный на записях. Это означает, что по мере того, как данные поступают в ваш конвейер (будь то JSON, CSV и т. Д.), Они анализируются в общий формат, поэтому ответственность за понимание формата данных больше не возлагается на каждый отдельный процессор, и любой процессор может быть подключен. к любому другому процессору.

SDC также работает автономно, а также в кластерном режиме, но вместо этого он запускается поверх Spark на YARN / Mesos, используя существующие ресурсы кластера, которые у вас могут быть.

NiFi существует около последних 10 лет (но менее 2 лет в сообществе с открытым исходным кодом).

StreamSets был выпущен для сообщества разработчиков ПО с открытым исходным кодом немного позже, в 2015 году. Он не зависит от производителя, и в Hadoop поддерживаются Hortonworks, Cloudera и MapR.

Полное раскрытие информации: я инженер, работающий над StreamSets.

person ramblingpolak    schedule 28.04.2016
comment
Это было хорошо описано. Большое спасибо - person Goutam; 28.04.2016
comment
Сравнивать StreamSets и NiFi на OpenHUB довольно интересно - многие статистические данные ближе, чем вы можете себе представить: StreamSets против NiFi - person metadaddy; 28.04.2016
comment
Раскрытие информации: я также являюсь сотрудником StreamSets. - person metadaddy; 28.04.2016
comment
ОБНОВЛЕНИЕ: Nifi 1.3 имеет намного больше функций с концепциями записи, которые имеют реестр схем, а концепция записи в основном представляет собой представление формата с такими плагинами, как AvroReader, CSVReader, JSONReader, для плавного перехода от формата к формату. ... Nifi 1.6 также имеет больше функций без необходимости разбивать тысячи файлов на отдельные файлы. Просто кляксы мультифайлов в двоичном формате. Ускоряет процесс. - person Dexter; 23.05.2018

Они очень похожи для сценариев приема данных. Apache NIFI (HDP) более зрелый, а StreamSets более легкий. Оба они просты в использовании, оба обладают большими возможностями. И у StreamSets легко могут быть компании Hortonworks и Cloudera.

Очевидно, что над NIFI работает больше участников, чем над StreamSets, конечно, NIFI имеет больше корпоративных развертываний в производстве.

person david huang    schedule 28.04.2016
comment
Дэвид, интересно узнать, как вы определяете легкий вес? Например, я уже много месяцев использую NiFi на Raspberry PI. Какие критерии вы использовали? Спасибо! - person andrew; 28.04.2016
comment
Например, взгляните на образы размера Docker: Nifi ›1Gb / Stramset‹ 500Mb. Это можно рассматривать как более легкий - person gcharbon; 07.08.2018
comment
@gcharbon Ну, SDC позволяет добавлять плагины постфактум. В Нифи более-менее все уже встроено. Поэтому легкий вес и включенные батареи - это компромисс. - person OneCricketeer; 07.01.2019

ИМХО есть два ключевых различия между ними.

  1. Apache NiFi - это проект Apache верхнего уровня, то есть он прошел процесс инкубации, описанный здесь, http://incubator.apache.org/policy/process.html и может принимать взносы от разработчиков со всего мира, которые следуют стандартному процессу Apache, который обеспечивает качество программного обеспечения. StreamSets является ЛИЦЕНЗИОННЫМ для Apache, что означает, что любой может повторно использовать код и т. Д. Но проект не управляется как проект Apache. Фактически, чтобы даже внести свой вклад в Streamsets, вам НЕОБХОДИМО подписать контракт. https://streamsets.com/contributing/. Сравните это с руководством для участников Apache NiFi, которое не было написано юристом. https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide#ContributorGuide-HowtocontributetoApacheNiFi

  2. StreamSets «вместо этого запускается поверх Spark на YARN / Mesos, используя существующие ресурсы кластера, которые у вас могут быть». что налагает некоторые ограничения, если вы хотите развернуть потоки данных дальше в сторону Edge, где находятся устройства, генерирующие данные. Apache MiniFi, подпроект NiFi, может работать на одном Raspberry Pi, в то время как я вполне уверен, что StreamSets не может, поскольку YARN или Mesos требуют больше ресурсов, чем предоставляет Raspberry Pi.

Раскрытие информации: я сотрудник Hortonworks

person David Kjerrumgaard    schedule 28.07.2017
comment
Теперь существует продукт Data Collector Edge, который может работать на встроенных устройств. (Раскрытие: сотрудник StreamSets) - person Jeff Evans; 13.03.2018
comment
И, на самом деле, даже полная версия StreamSets Data Collector работает на RPi, и даже самый поверхностный поиск показал бы вам streamsets.com/blog/ - person metadaddy; 04.04.2019
comment
жаль, что SDC UI не работает на windows даже в 2019/20 :( - person Samant; 17.11.2019