Введение в Apache NiFi

Apache NiFi — это не просто инструмент для обработки и распределения данных; это мощный инструмент, который может обрабатыватьanything от простых потоков данных до сложных, реальных времени потоковых.pipeline. Если вы хотите построить robust систему для обработки потоковых данных, NiFi должен быть в верхней части вашего списка.

Ключевые особенности Apache NiFi

Гарантированная доставка

Одна из основных философий NiFi — гарантированная доставка, даже в большом масштабе. Это đạtается через специально созданный журнал записи вперед и репозиторий содержимого. Эта функция обеспечивает безопасную обработку и доставку ваших данных, снижая риск потери данных.

Буферизация данных и обратное давление

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

Приоритетная очередь

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

Качество обслуживания, специфичное для потока

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

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

NiFi автоматически записывает, индексирует и делает доступными данные о происхождении, когда объекты проходят через систему. Это включает в себя подробную информацию о происхождении, которая необходима для соблюдения требований, устранения неполадок и оптимизации.

Настройка Apache NiFi

Установка Apache NiFi

Чтобы начать работать с NiFi, вам нужно скачать и установить его. Вот основные шаги:

  1. Скачать NiFi: Вы можете скачать последнюю версию Apache NiFi с официального сайта Apache NiFi.
  2. Распаковать архив: Распакуйте скачанный архив в директорию по вашему выбору.
  3. Запустить NiFi: Перейдите в распакованный каталог и запустите команду bin/nifi.sh start (на Linux/Mac) или bin\nifi.bat start (на Windows).

Основная конфигурация

После запуска NiFi вы можете доступиться к веб-интерфейсу, перейдя по адресу http://localhost:8080/nifi в вашем веб-браузере.

Создание потока данных

Вот пошаговое руководство по созданию простого потока данных:

  1. Добавить источник: Перетащите и бросьте процессор GetHTTP из панели инструментов на холст. Этот процессор будет извлекать данные из HTTP-конечной точки.
  2. Настроить источник: Дважды кликните на процессор GetHTTP и настройте его с URL-адресом источника данных.
  3. Добавить процессор: Перетащите и бросьте процессор SplitJson для разделения JSON-данных на отдельные записи.
  4. Добавить назначение: Перетащите и бросьте процессор PutHDFS для хранения обработанных данных в HDFS.
  5. Соединить процессоры: Соедините процессоры в последовательности: GetHTTP -> SplitJson -> PutHDFS.
graph TD A("GetHTTP") -->|Success| B("SplitJson") B -->|Success| B("PutHDFS")

Интеграция Apache NiFi с другими инструментами

Интеграция с Apache Kafka

Apache Kafka — популярная система обмена сообщениями для обработки высокопроизводительных и низколатентных, отказоустойчивых и масштабируемых данных.

Шаги интеграции NiFi с Kafka

  1. Добавить производитель Kafka: Перетащите и бросьте процессор PublishKafka на холст.
  2. Настроить производитель Kafka: Настройте процессор PublishKafka с деталями брокера Kafka и именем темы.
  3. Подключиться к производителю Kafka: Подключите предыдущий процессор к процессору PublishKafka.
graph TD A("GetHTTP") -->|Success| B("SplitJson") B -->|Success| B("PublishKafka")

Интеграция с Apache Spark

Apache Spark широко используется для пакетной и потоковой обработки данных. Вот как вы можете интегрировать NiFi с Spark:

Использование коммуникации сайт-к-сайту

NiFi может отправлять данные в Spark используя коммуникацию сайт-к-сайту.

  1. Добавить выходной порт: Создайте выходной порт в NiFi для отправки данных в Spark.
  2. Настроить задание Spark: Настройте ваше задание Spark для чтения данных из выходного порта NiFi.
sequenceDiagram participant NiFi participant Spark NiFi->>Spark: Send Data via Output Port Spark->>NiFi: Acknowledge Data Receipt

Расширенные функции и лучшие практики

Трансформация данных

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

Безопасность и аутентификация

NiFi поддерживает безопасные протоколы связи, включая HTTPS, TLS и SSH. Он также предоставляет многопользовательскую авторизацию и управление политиками, обеспечивая безопасность ваших данных и доступ только авторизованным пользователям.

Мониторинг и обратная связь

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

Реальный пример: обработка реальных данных о ценных бумагах

Вот пример того, как вы можете использовать NiFi для обработки реальных данных о ценных бумагах из API seperti IEX.

Шаги

  1. Извлечь данные о ценных бумагах: Используйте процессор GetHTTP для извлечения реальных данных о ценных бумагах из API IEX.
  2. Разделить и обработать данные: Используйте процессор SplitJson для разделения JSON-данных на отдельные записи.
  3. Хранить в Kafka: Используйте процессор PublishKafka для хранения обработанных данных в темах Kafka.
  4. Хранить в HDFS: Используйте процессор PutHDFS для хранения данных в HDFS для постоянного хранения.
graph TD A("GetHTTP") -->|Success| B("SplitJson") B -->|Success| C("PublishKafka") B -->|Success| B("PutHDFS")

Дополнительная обработка с помощью Kafka Streams и Spark

После того как данные попадают в Kafka, вы можете использовать Kafka Streams или Spark для дополнительной обработки событий, машинного обучения и глубокого обучения. Вот высокоуровневая архитектурная диаграмма:

graph TD A("GetHTTP") -->|Success| B("SplitJson") B -->|Success| C("PublishKafka") C -->|Success| D("Kafka Streams") D -->|Success| E("Spark") E -->|Success| F("HDFS") E -->|Success| B("Druid")

Заключение

Apache NiFi — это универсальный и мощный инструмент для построения robust систем обработки потоковых данных. С его пользовательским интерфейсом, гарантированной доставкой и обширными настройками NiFi делает легко обработку сложных потоков данных. Интегрируя NiFi с другими инструментами, такими как Kafka и Spark, вы можете создать всесторонний pipeline обработки данных, который удовлетворяет требованиям реального времени аналитики и big data приложений.

Итак, в следующий раз, когда вы столкнетесь с задачей обработки потоковых данных, помните, что Apache NiFi — ваш go-to решение. Это не просто инструмент; это data superhero, который спасает день, один data flow за раз.