大家好,欢迎来到IT知识分享网。
0 简介
Apache NiFi是一个基于流编程概念的数据流系统。它支持功能强大且可伸缩的数据路由、转换和系统中介逻辑有向图。NiFi有一个基于web的用户界面,用于设计、控制、反馈和监视数据流。它在服务质量的几个维度上是高度可配置的,比如容错与保证交付、低延迟与高吞吐量以及基于优先级的队列。NiFi为所有接收的、分叉的、连接的、克隆的、修改的、发送的和最终到达配置的最终状态时丢弃的数据提供细粒度的数据来源。
- 安装
在线安装
https://nifi.apache.org/quickstart.html
离线安装
三台集群方式安装
1. 安装jdk1.8
2. 安装zookeeper
3. 安装nifi(使用外部zookeeper)(三台相同配置)
- 下载安装包,上传到集群并解压
https://archive.apache.org/dist/nifi/
- 配置集群。配置一台后分发,然后把本机地址全部修改为本机的
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、界面介绍
3、区域一
这里就是“操作画布“,所有的对数据流的操作基本都在这个上面进行,在这上面可以进行”拖、拽、拉、连线…“等等操作,至于这几个操作的具体作用是什么,在后续的实例中会具体介绍。(从图中可以看到画布上面有几个我之前建好的组)
4、区域二
这里主要是构造数据流操作的主要面板。
1、添加模块(processor)
nifi内部会提供各个处理模块,当我们在进行数据处理的过程中,可以选择不同的模块并调整变量进行拼装,从而组合成一个完整的数据流处理的组。
2、添加数据流传入点(input-port)
虽说是数据流输入点,但是并不是整体数据流的起点。它是作为组与组之间的数据流连接的传入点与输出点。
3、添加数据流输出点(output-port)
同理上面的输入点。它是作为组与组之间的数据流连接的传入点与输出点。
4、添加组(process-group)
组相当于系统中的文件夹,作用就是使数据流的各个部分看起来更工整,思路更清晰,不至于从头到尾一条线阅读起来十分不方便。
5、添加远端的组(remote process-group)
根据弹出框进行信息配置,可加入远程的组。
6、拉取已有的文件(template)
每当做好一个完整的数据流后,可存储到本地为xml文件,nifi支持本地的template上传,这个按钮就是在上传本地template之后,选择上传过的一个获取到操作画布上。
7、添加便签(label)
相当于便签,可放置在画布空白处,写上备注信息。
5、区域三
这一部分是对区域一这个画布的缩小预览,点击放大缩小可调整视野,蓝框区域就是画布当前的界面,可用鼠标在这部分进行移动从而调整画布的视野。
6、区域四
开始运行
选中模块并点击运行按钮,开始进行对数据流的处理。
停止运行
选中模块并点击停止按钮,则停止了进行对数据流的处理。
保存template
选择你要保存的一个template,点击这个保存按钮,可把这个template保存到nifi系统里(并不是电脑本地,如果想保存到电脑本地,可点击右上角这个按钮,选择Template,弹出的页面上有下载选项)。
上传template
可上传本地的template(xml文件)到nifi系统里。
7、案例一
导出mysql中的数据转换为Json串并保存在本地
1、添加executesql到面板
(1.1)
(1.2) 配置executesql
(1.3)配置Database Connection Pooling Service
(1.4)点击 -> 配置Database Connection Pooling Service
注意:一定要将state改为Enable
2、添加ConverrtAvroToJson
(1)添加ConverrtAvroToJson到面板,不用修改任何属性配置。
- 添加PutFile
- 连接处理器
1、拖动箭头指向下一层,并勾选success。
Success和failure都要有下一级这个模块才能启动
2、把failure可以自动终止掉
executeSQL自动终止failure
convertavrotoJSon终止failure
putfile终止success和failure
- 调度
NiFi支持三种调度策略,包括Time Driven(时间驱动)、CRON Driven(CRON驱动)和Event Driven(事件驱动,非可选),根据我们实际需求选择CRON Driven,个人理解CRON即是Crontab的应用,CRON的各参数含义分别代表:秒、分、时、日、月、周、年,需要配合*、?和L共同执行(*代表字段的值都有效;?代表对于指定的字段不指定值;L代表长整形)。如:“0 0 13 * * ?”代表想要在每天下午1点进行调度执行。
1、crontab表达式
2、时间间隔调度
3.3 案例二
需求:导出Hive数据转换为csv并保存到HDFS
3.3.1 添加SelectHiveQL
(1)添加SelectHiveQL到面板
(2)配置数据仓库连接池
Hive-site.xml
Core-site.xml
有使用tez的话
Tez-site.xml
(3)启动数据仓库连接池
注意:此方案借助hiveserver2进行连接,因此要手动开启和hiveserver2服务。
(4)添加PutHDFS处理器
Core-site.xml
Hdfs-site.xml
(5)启动
(6)查看HDFS生成的文件
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/14558.html