Please enable JavaScript to view the comments powered by Disqus.

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

Image

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

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

Некоторые из ключевых функций и архитектурных решений, сделанных для обеспечения эффективности:

  1. Интерактивное командование и управление

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

  1. Происхождение данных

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

тем повторить. Это очень полезно.

  1. Специально разработанные хранилища данных

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

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

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

Михаил Махно

More recent stories

Image
2019-02-19 09:26:23
Создание решений торгов в режиме реального времени для видеорекламы
Read More
Image
2020-09-30 19:43:36
Анализ кликов – OpenSource архитектура
Read More
Image
2021-01-09 16:32:26
Apache Druid — Краткий обзор
Read More