- Flowfiles--are objects that represent a piece of data as well as metadata about the object.
- Processors--do the work of transforming and manipulating the data. They are similar to bolts in Storm.
- Connections--are the linkages between the processors that facilitate what kind of data (e.g., failed, matched) should move to the next processor.
- NiFi Canvas--is the graph-paper like interface of the NiFi GUI.
![NiFi has a simple but effective GUI that streamlines the user’s interaction with NiFi. Through the GUI, the user can build the data flow and monitor any errors as well as message processing metrics.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-1.png)
![Search for the type of processor, highlight the process, and click add to add the processor to the canvas. We will be adding the GetKafka processor for this example.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-3.png)
![Right click on the processor and click on the Configure option in the menu to customize the processor as necessary. For the GetKafka Processor, we will add a Topic Name and a ZooKeeper Connection String.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-4.png)
![Add a connection between the two processors by hovering the mouse in the middle of the GetKafka processors until the symbol is visible and then drag the symbol to the PutFile processor.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-5.png)
![In addition, a processor can be set to automatically terminate relationships.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-7.png)
![All flowfiles at the end of a process flow (i.e., flowfiles that reach the final processor) will need to be terminated as there will be no more processors left to process the flowfile. Since the PutFile processor, is the last processor in our flow, we will terminate failure and success relationships.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-8.png)
![Here is is the code for creating a processor that outputs a random hexadecimal hash as a NiFi flowfile attribute.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-9.png)
![Here is how the HexHash Processor code translates:](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-10.png)
![And with the code below “hexHash” attribute is added to NiFi flowfiles](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-11.png)
![To deploy the newly created processor, create a nar (essentially a jar file but for NiFi) of your Java code.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-12.png)
![Deploying NiFi on a multi-node cluster involves a few more steps than a single node deployment.](https://maxar-blog-assets.s3.amazonaws.com/uploads/blogImages/2017/04/Nifi-post-13.png)