Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Сураджа,

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

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

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

Главное, чтобы понять, что NiFi был создан, чтобы сделать действительно очень важную вещь, и это "Управление потоками данных". Он основан на концепции, называемой Flow Based Programming, о которой вы можете прочитать и ссылку для своего проекта 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] с удовольствием поможет.

Спасибо Джо

Ответ 2

Оба Apache NiFi и StreamSets Data Collector являются лицензированными средствами Apache с открытым исходным кодом.

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

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

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

NiFi может работать автономно или как кластер, используя собственную встроенную систему кластеризации.

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

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

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

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

Полное раскрытие: я инженер, который работает в StreamSets.

Ответ 3

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

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

Ответ 4

Два ключевых дифференциатора между двумя IMHO:

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

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

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