NIFI是什么
Apache NIFI是一个易于使用,功能强大且可靠的系统,用于处理
和分发
数据 ,可以自动化管理系统间的数据流。
优点:
NIFI核心组件概念
NIFI思想可以完全契合FBP(Flow Based Programing)的设计思想,主要核心组件及其概念如下表所示:
NIFI组件 | 概念 |
---|---|
FlowFile | FlowFile代表通过系统移动的每个对象,对于每个对象,NiFi都会跟踪键/值对属性字符串及其零个或多个字节的关联内容的映射。FlowFile中有attribute和content |
Processor | 处理器是在系统之间进行数据路由,转换或中介的某种组合。处理器可以访问给定FlowFile及其内容流的属性。处理器可以在给定的工作单元中对零个或多个FlowFiles进行操作,并提交该工作或回滚。 |
Connection | 连接提供了处理器之间的实际链接。这些充当队列,并允许各种进程以不同的速率进行交互。这些队列可以动态地进行优先级排序,并且可以在负载上设置上限,从而可以实现背压。 |
Flow Controller | 流控制器维护有关进程如何连接以及管理所有进程使用的线程及其分配的知识。流控制器充当代理,促进处理器之间的FlowFiles交换。 |
Group | 进程组是一组特定的进程及其连接,可以通过输入端口接收数据,并通过输出端口发送数据。以这种方式,过程组允许仅通过其他组件的组合来创建全新的组件。 |
NIFI优点:
NIFI架构
Web Server:承载nifi基于http的命令和控制API
Flow Controller:整个操作的核心,为将要运行的组件提供线程,管理调度
Extensions:基于JVM运行,支持各类java的NiFi扩展
FlowFile Repository:跟踪存储FlowFile状态数据
Content Repository:存储FlowFile内容数据
Provenance Repository:源头存储库,存储所有事件数据
NiFi 集群架构
NIFI集群零主模式
Cluster Coordinator:集群协调器,管理节点的添加删除等操作逻辑
Primary Node:主节点,用来运行一些不适合在从节点运行的组件
Zookeeper Client:zk节点
NiFi的性能
NiFi的设计目的是充分利用底层主机系统能力,这种资源的最大化在CPU和磁盘方面尤为明显。基于For IO,For CPU,For RAM优化。
NiFi 的关键特性
流管理:保证交付,数据缓冲 背压和压力释放,队列优先级,特殊流质量
易用性:可视化流程,流模板,数据起源跟踪,可以记录和重放细粒度历史记录缓冲区
灵活的缩放模型:水平扩展,扩展和缩小
NiFi入门
- FlowFile:每条“用户数据”(即用户带入NiFi进行处理和分发的数据)均称为FlowFile。FlowFile由两部分组成:属性和内容。内容是用户数据本身。属性是与用户数据关联的键/值对。
- processor:处理器是NiFi组件,负责创建,发送,接收,转换,路由,拆分,合并和处理FlowFiles。它是NiFi用户可用来构建其数据流的最重要的构建块。
运行开发环境,下载安装jdk
下载:NiFi官网 https://nifi.apache.org/download.html
修改默认端口:/conf/nifi.properties 137 nifi.web.http.port=58080
Linux 启动:进入安装目录 前台运行bin/nifi.sh run
后台运行 bin/nifi.sh start
,查看nifi状态bin/nifi.sh status
作为服务进行安装bin/nifi.sh install
,bin/nifi.sh install [服务名]
,启动时service nifi start
常用的处理器
配置处理器
其他组件
数据流传入点(input-port):用于组与组之间的数据连接
数据流输出点(output-port):
组(process-group):
远程组(remote process-group):
聚合(funnel):将多connection的数据整合到一个connection
模板(template):将若干组件整合成一个组,从该组创建数据流模板,模板可以到处XML格式
便签(label):写备注信息
导航(Navigate):
操作区(Operate):