APACHE NIFI против APACHE AIRFLOW против APACHE FALCON?Что подходит лучше всего в следующем сценарии? - PullRequest
0 голосов
/ 12 ноября 2018

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

  • Retrieve an XML file from a folder
  • Process the XML file
  • Perform some image processing
  • Schedule a job and execute it on the scheduled time
  • Storing data on a MySQL DB and perform some REST calls to outside APIs

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

  • I should be able to create custom workflows for new vendors
  • Need to identify any failures that have been occurred within the workflow and perform retry mechanisms.
  • Should be able to execute some functions parallelly (Eg: Image processing)
  • Scalable
  • Opensource

Так что мне сказали посмотреть на менеджеров рабочих процессов, таких как Nifi / Airflow / Falcon. Я провел их исследование, но не смог найти наиболее подходящее решение.

ПРИМЕЧАНИЕ: НЕТ требования использовать Hadoop или любой другой кластер, и частота потока данных не так высока

В настоящее время я думаю об использовании Nifi. Но может ли кто-нибудь высказать свое мнение по этому поводу? Что было бы лучшим решением для моего варианта использования?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я использую nifi с аналогичным сценарием использования OP. Что касается планирования, мне нравится, как nifi работает с Kafka, у меня есть несколько сценариев, запланированных для запуска с частотой crontab, просто добавление сообщения в темы Kafka, какую тему слушает nifi, затем запускает оркестровку для загрузки, преобразования, выборки, индексирования Кроме того, вы можете хранить HttpRequest, так что вы можете сделать своего рода «приемники webhook» для запуска процесса из внешнего HTTP POST, еще раз, для простых развертываний (таких, которые вы подключаете и играете в единственная машина) cronjob прибивает задачу. Для обработки изображений у меня есть устройство для считывания изображений OCR с python, подключенным к процессору ExecuteScript, и одно лицо с opencv с процессором ExecuteCommand, обратное давление автоматической nifi решило многие проблемы, которые я запускал, только работая скрипт python и команда сама по себе.

0 голосов
/ 13 ноября 2018

Apache NiFi не является менеджером рабочих процессов, как Apache Airflow или Apache Oozie. Это инструмент потока данных - он направляет и преобразует данные. Он не предназначен для планирования заданий, а позволяет собирать данные из нескольких мест, определять отдельные этапы для обработки этих данных и направлять эти данные в разные места назначения.

Apache Falcon снова отличается тем, что позволяет более легко определять и управлять наборами данных HDFS. Это эффективное управление данными в кластере HDFS.

На основании вашего описания, NiFi будет полезным дополнением к вашим требованиям. Он сможет собирать ваш XML-файл, обрабатывать его каким-либо образом, хранить данные в MySQL и выполнять вызовы REST. Он также легко настраивается для новых поставщиков и хорошо переносит сбои. Он выполняет большинство функций параллельно и может масштабироваться в кластерный NiFi с несколькими хост-машинами. Он был разработан с учетом производительности и надежности.

В чем я не уверен, так это в способности выполнять обработку изображений. Есть несколько процессоров (извлечение метаданных изображения, изменение размера изображения), но в противном случае вам нужно будет разработать новый процессор на Java, что относительно просто. Или, если для обработки изображений используется Python или другой язык сценариев, вы можете использовать один из процессоров ExecuteScript.

«Планирование заданий» с использованием NiFi не рекомендуется.

Полное раскрытие: я участник Apache NiFi.

...