初识Apache NiFi
一. NiFi介绍
Apache NiFi支持功能强大且可扩展的数据路由,转换和系统中介逻辑的有向图。 Apache NiFi的一些高级功能和目标包括:
- 基于Web的用户界面
- 设计,控制,反馈和监控之间的无缝体验
- 高度可配置
- 容忍损失与保证交付
- 低延迟与高吞吐量
- 动态优先级
- 可以在运行时修改流程
- 备压
- 数据来源
- 跟踪从头到尾的数据流
- 专为扩展而设计
- 构建自己的处理器等等
- 实现快速开发和有效测试
- 安全
- SSL,SSH,HTTPS,加密内容等
- 多租户授权和内部授权/策略管理
二. 用户界面介绍
介绍NiFI界面之前先了解NiFi的基本对象FlowFile
FlowFile
表示在系统中移动的每个对象,对于每个对象,NiFi跟踪键/值对属性字符串的映射及其相关的零个或多个字节的内容。
简单理解:FlowFile就是文件,见图中红色所圈queue树为2,大小为0bytes;FlowFile是如何产生的呢?选中GenerateFlowFile右键执行后产生的。
选择队列右键选择list queue,然后就看到了2个FlowFile的相关信息了
1. Processor(处理器)
介绍:处理器是真正起作用的。 处理器对系统之间的数据路由,转换或中介进行某种组合。 处理器可以访问给定FlowFile及其内容流的属性。
处理器可以在给定的工作单元中对零个或多个FlowFiles进行操作,并提交工作或回滚。
使用:选中Processor图标拖入画布中,如图所示,然后选择你所需要使用的processor,processor的使用示例见下篇文章
2.Input Port(输入端口)
用于Process Group和Remote Process Group
在同一个Process Group中不需要使用Input Port,而在不同Process Group之间进行FlowFile传输时就需要使用到Input Port
见Process Group的例子
3.output Port(输出端口)
用于Process Group
在同一个Process Group中不需要使用Input Port,而在不同Process Group之间进行FlowFile传输时就需要使用到Input Port
见Process Group的例子
4.Process Group(进程组)
介绍:处理组是一组特定的进程及其连接,可以通过输入端口接收数据并通过输出端口发送数据。以这种方式,处理组允许仅通过组合其他组件来创建全新组件。
简单说就是对多个processor分成同一个组,根据你自己的业务或功能分组
使用:比如说我要从hdfs上获取一个目录下的所有文件数据(josn)同步到mysql库中,选中Process Group拖入画布中,如同所示:
1.进入GetHdfsFiles处理组,该组是获取hdfs上的数据,使用了ListHdfs、FetchHdfs、splitText处理器及Output Port
2.进入syncDataToMysql处理组,该组是把数据插入mysql中,使用了Input Port及ConvertJSONToSQL、PutSQL处理器
5.Remote Process Group(远程进程组)
不同NiFi单节点或集群之间的FlowFile传输,同一NiFi集群单节点的FlowFile分发到多个节点
6.Funnel(漏斗)
把多个输入合入到一条流中
7.Template(模板)
选择已导入到NiFi上的模板(XML文件)
8.Label(标签)
给Processor、Process Group、Remote Process Group等等打标签做说明