天天看点

nifi 安装 使用案例

0 简介

    Apache NiFi是一个基于流编程概念的数据流系统。它支持功能强大且可伸缩的数据路由、转换和系统中介逻辑有向图。NiFi有一个基于web的用户界面,用于设计、控制、反馈和监视数据流。它在服务质量的几个维度上是高度可配置的,比如容错与保证交付、低延迟与高吞吐量以及基于优先级的队列。NiFi为所有接收的、分叉的、连接的、克隆的、修改的、发送的和最终到达配置的最终状态时丢弃的数据提供细粒度的数据来源。

  • 安装

在线安装

https://nifi.apache.org/quickstart.html

离线安装

三台集群方式安装

1. 安装jdk1.8

2. 安装zookeeper

3. 安装nifi(使用外部zookeeper)(三台相同配置)

  1. 下载安装包,上传到集群并解压

https://archive.apache.org/dist/nifi/

  1. 配置集群。配置一台后分发,然后把本机地址全部修改为本机的

        conf/nifi.properties修改端口号和路径:

       #web访问地址: nifi.web.http.host=本机地址

       #web访问端口: nifi.web.http.port=18001

       #路由输入地址:nifi.remote.input.host=本机地址

       #路由输入端口:nifi.remote.input.socket.port=18002

       #分布式集群节点:nifi.cluster.is.node=true

       #分布式节点地址:nifi.cluster.node.address=本机地址

       #分布式节点端口:nifi.cluster.node.protocol.port=28001

       #zookeeper配置:nifi.zookeeper.connect.string=zookeeper集群       地址 al-node2:2181…

启动nifi

/opt/module/nifi-1.8.0/bin/nifi.sh start

/opt/module/nifi-1.8.0/bin/nifi.sh stop

查看日志

tail -F /opt/module/nifi-1.8.0/logs/nifi-app.log

等待5分钟,访问

hadoop102:18001

二、使用(hive版本要求1.2. hive 单节点nifi也得单节点)

2.1 Web简介

1、权限

默认情况下,没有配置权限,因此任何人都可以查看和修改数据流。

https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html

2、界面介绍

nifi 安装 使用案例

3、区域一

这里就是“操作画布“,所有的对数据流的操作基本都在这个上面进行,在这上面可以进行”拖、拽、拉、连线…“等等操作,至于这几个操作的具体作用是什么,在后续的实例中会具体介绍。(从图中可以看到画布上面有几个我之前建好的组)

4、区域二

这里主要是构造数据流操作的主要面板。

1、添加模块(processor)

nifi内部会提供各个处理模块,当我们在进行数据处理的过程中,可以选择不同的模块并调整变量进行拼装,从而组合成一个完整的数据流处理的组。

nifi 安装 使用案例

2、添加数据流传入点(input-port)

虽说是数据流输入点,但是并不是整体数据流的起点。它是作为组与组之间的数据流连接的传入点与输出点。

nifi 安装 使用案例

3、添加数据流输出点(output-port)

同理上面的输入点。它是作为组与组之间的数据流连接的传入点与输出点。

nifi 安装 使用案例

4、添加组(process-group)

组相当于系统中的文件夹,作用就是使数据流的各个部分看起来更工整,思路更清晰,不至于从头到尾一条线阅读起来十分不方便。

nifi 安装 使用案例

5、添加远端的组(remote process-group)

根据弹出框进行信息配置,可加入远程的组。

nifi 安装 使用案例

6、拉取已有的文件(template)

每当做好一个完整的数据流后,可存储到本地为xml文件,nifi支持本地的template上传,这个按钮就是在上传本地template之后,选择上传过的一个获取到操作画布上。

nifi 安装 使用案例

7、添加便签(label)

相当于便签,可放置在画布空白处,写上备注信息。

nifi 安装 使用案例

5、区域三

这一部分是对区域一这个画布的缩小预览,点击放大缩小可调整视野,蓝框区域就是画布当前的界面,可用鼠标在这部分进行移动从而调整画布的视野。

6、区域四

nifi 安装 使用案例

 开始运行

选中模块并点击运行按钮,开始进行对数据流的处理。

 停止运行

选中模块并点击停止按钮,则停止了进行对数据流的处理。

 保存template

选择你要保存的一个template,点击这个保存按钮,可把这个template保存到nifi系统里(并不是电脑本地,如果想保存到电脑本地,可点击右上角这个按钮,选择Template,弹出的页面上有下载选项)。

 上传template

可上传本地的template(xml文件)到nifi系统里。

7、案例一

导出mysql中的数据转换为Json串并保存在本地

1、添加executesql到面板

(1.1)

nifi 安装 使用案例

(1.2) 配置executesql

nifi 安装 使用案例
nifi 安装 使用案例
nifi 安装 使用案例
nifi 安装 使用案例

(1.3)配置Database Connection Pooling Service

nifi 安装 使用案例
nifi 安装 使用案例

(1.4)点击 -> 配置Database Connection Pooling Service

nifi 安装 使用案例

注意:一定要将state改为Enable

nifi 安装 使用案例

2、添加ConverrtAvroToJson

(1)添加ConverrtAvroToJson到面板,不用修改任何属性配置。

  1. 添加PutFile
nifi 安装 使用案例
  1. 连接处理器

1、拖动箭头指向下一层,并勾选success。

nifi 安装 使用案例
nifi 安装 使用案例

Success和failure都要有下一级这个模块才能启动

nifi 安装 使用案例

2、把failure可以自动终止掉

         executeSQL自动终止failure

         convertavrotoJSon终止failure

         putfile终止success和failure

nifi 安装 使用案例
nifi 安装 使用案例
nifi 安装 使用案例
nifi 安装 使用案例
  1. 调度

        NiFi支持三种调度策略,包括Time Driven(时间驱动)、CRON Driven(CRON驱动)和Event Driven(事件驱动,非可选),根据我们实际需求选择CRON Driven,个人理解CRON即是Crontab的应用,CRON的各参数含义分别代表:秒、分、时、日、月、周、年,需要配合*、?和L共同执行(*代表字段的值都有效;?代表对于指定的字段不指定值;L代表长整形)。如:“0 0 13 * * ?”代表想要在每天下午1点进行调度执行。

1、crontab表达式

nifi 安装 使用案例

2、时间间隔调度

nifi 安装 使用案例

3.3 案例二

需求:导出Hive数据转换为csv并保存到HDFS

3.3.1 添加SelectHiveQL

(1)添加SelectHiveQL到面板

nifi 安装 使用案例

(2)配置数据仓库连接池

Hive-site.xml

Core-site.xml

有使用tez的话

Tez-site.xml

nifi 安装 使用案例

(3)启动数据仓库连接池

nifi 安装 使用案例

注意:此方案借助hiveserver2进行连接,因此要手动开启和hiveserver2服务。

(4)添加PutHDFS处理器

Core-site.xml

Hdfs-site.xml

nifi 安装 使用案例

(5)启动

nifi 安装 使用案例

(6)查看HDFS生成的文件

nifi 安装 使用案例