什么是NiFi
Put simply NiFi was built to automate the flow of data between systems. While the term dataflow is used in a variety of contexts, we use it here to mean the automated and managed flow of information between systems.
NiFi是一种数据流处理工具,可以将处在不同系统(数据库)中的数据进行统一的ETL,并进行存储。在不同的系统间进行数据的导入导出。NiFi具备图形化的Web界面,用户能够通过简单的拖拽连线,将数据以流的形式在不同的系统中处理。NiFi可以在集群上部署。
NiFi能解决什么问题
简单的说,如果你有三个数据库(数据仓库),Mysql,Hive,Hbase。存储着你需要的某些有关联的数据,你想要将三个数据库中的数据抽取出来,做某些处理后统一存储在某个数据库中。NiFi封装了对各个数据库的接口,在图形化界面中连接各个Processor,能够很轻松的实现这个需求。
NiFi的核心概念
NiFi是基于流的编程(Flow Basical Programming, FBP)的一种实现。下面简要介绍下NiFi的一些基本概念以及与FBP术语的一些联系。
NiFi Term | FBP Term | Description |
---|---|---|
FlowFile | Information Packet | 数据被NiFi抽取出来后是以FlowFile的形式进行操作的,以字段的key/value键值对的形式进行存储 |
FlowFile Processor | Black Box | 流文件处理器的对数据进行合并、路由、转换和调制解调等处理 |
Connection | Bounded Buffer | 将Processor进行关联,以队列的形式操作,并且能够以不同的速率在不同的processes中交互 |
Flow Controller | Scheduler | Flow Controller维护着Processor对线程的管理和分配,充当不同Processor的协调者(broker) |
Process Group | subnet | 一些列处理的集合,可以通过合并多个component来创建一个新的components |
NiFi的架构
NiFi是运行在JVM之上的。
Web Server
NiFi能开启web服务,用户通过访问该服务器获取web图形界面,来与NiFi进行交互。
Flow Controller
NiFi最主要的部分,主要在这部分进行编程
Extensions
扩展部分
FlowFile Repository
追踪Flow File的状态
Content Repository
FlowFile的内容实际的活动位置
Provenance Repository
The Provenance Repository is where all provenance event data is stored. The repository construct is pluggable with the default implementation being to use one or more physical disk volumes. Within each location event data is indexed and searchable.
NiFi也可部署在集群上
每个NiFi节点都做着同样的数据处理工作,集群通过zookeeper来选举一个Cluster Coordinator,集群中的每个Node通过心跳机制向Cluster Coordinator汇报状态信息。此外,每个集群都由zookeeper选举一个主节点。故障切换同样由zookeeper控制。