NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)
一、简介
NiFi是一个易用、强大、可靠的数据处理与分发系统。基于Web图形界面,通过拖曳、连接、配置完成基于流程的编程,实现数据采集等功能。
传统的数据解决方案通常会遇到以下挑战:网络错误、硬盘错误、软件崩溃、人为错误、数据生产能力超过消费能力、对现有数据流进行增加和修改需要的操作太复杂等等
二、NiFi的特性及优缺点
特性
1、可视化控制
NiFi提供一个可视化的数据流展现与编辑,使得用户处理数据流更加直观。在数据流上做出修改时,这个更改将立即在时机生产中产生作用。用户进行局部修改时,不需要停止整个流处理过程。
2、数据背压
NiFi提供队列缓存,当生产速度大于消费速度时。能提供数据背压能力
3、优先级队列
NiFi允许设置一个或多个优先级方案。默认为先进先出策略,也可以设置为先进先出、最老的数据先出、最新的数据先出
4、流式QoS保障
经常有一些数据是非常重要且不能丢失的,需要低延迟处理,NiFi能够为这些数据流提供QoS保障。
5、数据跟踪
NiFi自动记录对数据流的每一次操作
6、记录、恢复历史记录
NiFi提供数据追踪记录功能,用户能够对中间过程的内容进行下载和回放
7、模板
很多数据流模式,是可以复用的。NiFi允许用户发布设计模板并共享给其他人
8、安全性
系统间,NiFi可以通过双向SSL进行数据加密
9、高拓展性
优缺点
Nifi的主要优点有:
A.可视化的UI界面,各个模块组件之间高度可配置,且每个流程都有监控,可以通过界面直观的看到各个数据处理模块之间的数据流转情况,分析出程序性能瓶颈。
B.数据流可以在UI界面自由拖拽和拓展,各模块之间相互独立,互不影响。
C.可以在处理耗时的地方创建多个处理模块并行执行,提升处理速度。类似于代码中加入了多线程,但相对于修改代码,界面配置操作十分简单。
D.修改方便,任意模块都可以在数据流转过程中随时启停,任意处理模块都可以实现热插拔。数据流流向随时可变。
E. Nifi的对处理模块有对应的retry机制和错误分发机制,且可配置性强。
缺点:
各个步骤中间结果落地导致磁盘IO成为Nifi的瓶颈,这个缺点在数据冗余量越大的时候表现的越明显。
三、NiFi核心组件
1.FlowFile
FlowFile代表每个被系统处理的数据对象。每个FlowFile由两部分组成:属性和内容。内容是数据本身,属性是与数据相关的key-value键值对,用于描述数据。
2.Processor
Processor可以用来创建、发送、接受、转换、路由、分割、合并、处理FlowFiles。Processor可以访问给定的FlowFile。
3.Connection
提供Processor之间的连接,作为Processors之间的缓冲队列。用来定义Processors之间的执行关系,并允许不同Processors之间以不同的速度进行交互。
4.Process Group
一个特定集合的Processors与他们之间的连接关系形成一个ProcessGroup。
5.Reporting Task
Reporting Task是一种后台运行的组件,可将Metrics指标、监控信息、内部NiFi状态发送到外部 。
6.Funnel
漏斗是一个NiFi组件,用于将来自多个连接的数据组合成单个连接。
7.Controller Service
四、基本操作
1 下载
[root@sandbox-hdp opt]# wget https://downloads.apache.org/nifi/1.11.4/nifi-1.11.4-bin.tar.gz
2 解压安装
tar -xvf nifi-1.11.4-bin.tar.gz
删除压缩包
rm nifi-1.11.4-bin.tar.gz
修改端口为:9090
vi nifi.properties
bin目录下:
# 启动nifi
./nifi.sh start
# 查看nifi状态
./nifi.sh status
# 停止nifi
./nifi.sh stop
去浏览器进入NiFi的Web UI界面:127.0.0.1:9090
案例:将文件从SFTP服务器通过NiFi上传到HDFS
1、创建一个ListSFTP
进行相关设置
去hdp根目录下创建目录(此目录为目标目录)
mkdir sftp_home
设置remote Path
/root/sftp_home
# 查看core-site.xml、hdfs-site.xml所在目录
/usr/hdp/current/hadoop-client/conf
ll core-site.xml
ll hdfs-site.xml
# 确保hdfs没有此目录/user/nifi/demo(该目录为文件上传到hdfs的目录)
hdfs dfs -ls /user/nifi/demo
4、创建两个LogMessage
5、传文件
向目录传一个文件
install -m 777 workflow.xml sftp_home/
6、流程开始
查看文件是否上传到hdfs
hdfs dfs -ls /user/nifi/demo
[root@sandbox-hdp ~]# hdfs dfs -ls /user/nifi/demo
Found 1 items
-rw-r--r-- 1 root hdfs 1301 2020-04-07 12:32 /user/nifi/demo/workflow.xml
查看日志文件
cd/opt/nifi-1.11.4/logs
[root@sandbox-hdp logs]# vi nifi-app.log
...
2020-04-07 12:32:15,858 INFO [Timer-Driven Process Thread-7] o.a.nifi.processors.standard.LogMessage LogMessage[id=53f45a01-0171-1000-5bbf-50dc92f31690] "File transferred to hdfs"...