Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to import backups in NiFi?

Using NiFi v0.6.1 is there a way to import backups/archives?

And by backups I mean the files that are generated when you call POST /controller/archive using the REST api or "Controller Settings" (tool bar button) and then "Back-up flow" (link).

I tried unzipping the backup and importing it as a template but that didn't work. But after comparing it to an exported template file, the formats are reasonably different. But perhaps there is a way to transform it into a template?

At the moment my current work around is to not select any components on the top level flow and then select "create template"; which will add a template with all my components. Then I just export that. My issue with this is it's a bit more tricky to automate via the REST API. I used Fiddler to determine what the UI is doing and it first generates a snippet that includes all the components (labels, processors, connections, etc.). Then it calls create template (POST /nifi-api/contorller/templates) using the snippet ID. So the template call is easy enough but generating the definition for the snippet is going to take some work.

Note: Once the following feature request is implemented I'm assuming I would just use that instead:

https://cwiki.apache.org/confluence/display/NIFI/Configuration+Management+of+Flows

like image 415
Mike Avatar asked Dec 06 '22 17:12

Mike


2 Answers

The entire flow for a NiFi instance is stored in a file called flow.xml.gz in the conf directory (flow.xml.tar in a cluster). The back-up functionality is essentially taking a snapshot of that file at the given point in time and saving it to the conf/archive directory. At a later point in time you could stop NiFi and replace conf/flow.xml.gz with one of those back-ups to restore the flow to that state.

Templates are a different format from the flow.xml.gz. Templates are more public facing and shareable, and can be used to represent portions of a flow, or the entire flow if no components are selected. Some people have used templates as a model to deploy their flows, essentially organizing their flow into process groups and making template for each group. This project provides some automation to work with templates: https://github.com/aperepel/nifi-api-deploy

like image 191
Bryan Bende Avatar answered Feb 12 '23 00:02

Bryan Bende


You just need to stop NiFi, replace the nifi flow configuration file (for example this could be flow.xml.gz in the conf directory) and start NiFi back up.

If you have trouble finding it check your nifi.properties file for the string nifi.flow.configuration.file= to find out what you've set this too.

If you are using clustered mode you need only do this on the NCM.

like image 21
tommyyards Avatar answered Feb 11 '23 22:02

tommyyards