NiFi在主机操作系统上的JVM中执行。JVM上NiFi的主要组件如下:
Web Server
web服务器的目的是托管NiFi基于HTTP的命令和控制API。
Flow Controller
流量控制器是操作的大脑。它为运行扩展提供线程,并管理扩展何时接收要执行的资源的时间表。
Extensions
其他文档中描述了各种类型的NiFi扩展。这里的关键是扩展在JVM中操作和执行。
FlowFile Repository
流文件存储库是NiFi跟踪它所知道的关于当前在流中活动的给定流文件的状态的地方。存储库的实现是可插入的。默认方法是位于指定磁盘分区上的持久预写日志。
Content Repository
内容存储库是给定流文件的实际内容字节所在的位置。存储库的实现是可插入的。默认方法是一种相当简单的机制,它在文件系统中存储数据块。可以指定多个文件系统存储位置,以便使用不同的物理分区来减少任何单个卷上的争用。
Provenance Repository
出处存储库是存储所有出处事件数据的地方。存储库构造是可插入的,默认实现是使用一个或多个物理磁盘卷。在每个位置内,事件数据都是索引和可搜索的。
NiFi也可以在集群内运行。
从nifi1.0版本开始,采用了零前导聚类范式。NiFi集群中的每个节点对数据执行相同的任务,但每个节点对不同的数据集进行操作。apachezookeeper选择一个节点作为集群协调器,故障转移由ZooKeeper自动处理。所有集群节点都向集群协调器报告心跳和状态信息。集群协调器负责断开和连接节点。另外,每个集群都有一个主节点,也是由ZooKeeper选择的。作为数据流管理器,您可以通过任何节点的用户界面(UI)与NiFi集群交互。您所做的任何更改都会复制到集群中的所有节点,从而允许多个入口点。