etlapache-nifiairflowapache-falcon

Differences and Use Cases for Apache NiFi, Apache Airflow, and Apache Falcon?


I am trying to understand the differences between Apache NiFi, Apache Airflow, and Apache Falcon in the context of data pipeline management. Here is my use case:

Can someone provide insights into the specific functionalities and use cases where each of these tools excels?


Solution

  • Apache NiFi is not a workflow manager in the way the Apache Airflow or Apache Oozie are. It is a data flow tool - it routes and transforms data. It is not intended to schedule jobs but rather allows you to collect data from multiple locations, define discrete steps to process that data and route that data to different destinations.

    Apache Falcon is again different in that it allows you to more easily define and manage HDFS datasets. It is effectively data management within a HDFS cluster.

    Based on your description, NiFi would be useful addition to your requirements. It would be able to collect your XML file, process in it in some manner, store the data in MySQL, and perform REST calls. It would also be easily configurable for new vendors, and tolerates failures well. It performs most functions in parallel and can be scaled into a clustered NiFi with multiple host machines. It was designed with performance and reliability in mind.

    What I am unsure about is the ability to perform image processing. There are some processors (extract image metadata, resize image) but otherwise you would need to develop a new processor in Java - which is relatively easy. Or, if the image processing uses Python or some other scripting language, you can use one of the ExecuteScript processors.

    'Scheduling jobs' using NiFi is not recommended.

    Full disclosure: I am an Apache NiFi contributor.