nifi简介
nifi背景
NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化、可定制的数据集成产品。2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apache顶级项目。
NiFi概念
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。 这里的数据流表示系统之间的自动化和受管理的信息流。 基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。
下载安装
1、需运行在JVM环境下,没有环境,下载安装jdk(我的jdk使用的是1.8版本,可以根据自己需要安装)
2、下载NIFI (下载.zip)
1)下载链接:http://nifi.apache.org/download.html
3、解压下载的nifi-1.9.2-bin.zip到自己需要的路径
4、配置端口号(NIFI默认端口8080)
1)在cmd中查看端口号是否被占用
netstat -ano|findstr "8080"
2)若被占用,到NIFI安装路径下的\conf\nifi.properties中修改端口号(安装路径即为刚才的解压路径)
(打开文件直接搜索8080,更改保存即可,我此处更改端口号为9090)
5、启动NIFI 服务
双击启动文件:安装路径下的\bin\run-nifi.bat
6、测试是否安装成功
启动服务后稍等几分钟,打开浏览器访问 : http://localhost:9090/nifi/
出现以下页面,表示安装成功
7.查看NIFI运行报表
安装路径\logs\nifi-app.log
操作界面及文件同步
启动后,使用浏览器进行访问,地址:http://localhost:9090/nifi/
不理解NIFI是做什么的,看一个简单的例子(同步文件夹)吧,帮助理解
1、从工具栏中拖入一个Processor,在弹出面板中搜索GetFIle,然后确认
2、配置GetFile,设置结束关系、输入目录、保留源文件,其他设置可以不动,输入目录中有文件:file.txt(内容为abc)。
3、从工具栏中拖入一个Processor,在弹出面板中搜索PutFIle,然后确认,如第一步
4、配置PutFile,设置结束关系、输出目录,其他设置可以不动,输出目录为空文件夹
5、将GetFIle与PutFIle关联起来,从GetFIle中心点击,拖拉到PutFIle上
6、右键启动GetFIle与PutFIle,可以看到结果,输入目录中的文件同步到,输出目录中了
注意:操作过程中,注意错误排查
1、Processor上的警告
2、Processor上的错误
Oracle数据库同步
NIFI数据库增量同步用到的组件有QueryDatabaseTable、ConvertAvroToJSON,ConvertJSONToSQL、PutSQL四个组件,添加完成后的界面显示如下:
1、以表NIFINOTEST为例,表结构如下:
create table NIFINOTEST
(
id NUMBER not null,
test VARCHAR2(100),
rem VARCHAR2(100),
tags VARCHAR2(10)
)
2、在工具栏拖拽Processor至画布输入QueryDatabaseTable点击ADD添加组件到画布。
3、显示如下:
4、右击组件如图:
5、选择Configure选项选中Success显示如下:
6、选中PROPERTIES属性选显卡进行数据库连接池,数据库选择、数据表填写,为空字段判断,主键ID填写。
7、点击箭头显示如下:
8、点击CONTROLLER SERVICES选项卡下的 + 号输入DBCPConnectionPool显示如下:
9、点击ADD进入如下图,点击设置图标进行数据库连接池配置
Database Connection URL:jdbc:oracle:thin:@你的IP:1521:你的数据库名
Database Driver Class Name:oracle.jdbc.driver.OracleDriver
Database Driver Location(s):file:///D:/app/Administrator/product/11.1.0/db_1/jdbc/lib/ojdbc6.jar
此处Oracle的驱动jar加载一定要加上file:///(为3个/),jar文件我使用的是ojdbc6.jar,ojdbc4.jar插入数据会报错。
Database User:你的数据库名称
点击APPLY确认后显示如下:
点击中间图标显示如下图,点击ENABLE启用连接池
启用后的连接池界面显示如下:
10、在工具栏拖拽Processor 添加ConvertAvroToJSON组件(把数据库组件查询的数据Avro转为JSON),设置和属性配置如下
11、在工具栏拖拽Processor 添加ConvertJSONToSQL组件(把JSON数据转换为sql语句)设置和属性配置如下:
12、在工具栏拖拽Processor 添加PutSQL组件(把sql语句执行到数据库)设置和属性配置如下:
13、按住Shift键,鼠标选中所有组件,点击面板启动按钮启动所有组件
14、启动后界面如下:
15、操作数据源数据库新建的NIFINOTEST表插入数据后,查看目的数据库新建的NIFINOTEST表是否有了同步数据。
16、其它数据库如Mysql、SQLserver只需要在设置数据库驱动文件为对应的JAR即可,其它操作类同;我使用的数据库连接URL、数据库驱动程序类名、数据库驱动程序位置更换为对应的标示即可。我使用的驱动程序位置如下:
//mysql
Database Connection URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
Database Driver Class Name:com.mysql.jdbc.Driver
Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/mysql/mysql-connector-java/5.1.30/mysql- connector-java-5.1.30.jar
//sqlserver
Database Connection URL:jdbc:jtds:sqlserver://你的IP:1433/TEST
Database Driver Class Name:net.sourceforge.jtds.jdbc.Driver
Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar
17、模板学习:点此下载