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、模板学习:点此下载

更多推荐