NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)

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
NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第1张图片

案例:将文件从SFTP服务器通过NiFi上传到HDFS

1、创建一个ListSFTP

进行相关设置

NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第2张图片

去hdp根目录下创建目录(此目录为目标目录)

mkdir sftp_home

设置remote Path

/root/sftp_home

2、创建一个FetchSFTP
NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第3张图片
3、创建一个putHDFS

# 查看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

NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第4张图片

4、创建两个LogMessage

NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第5张图片
NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第6张图片

5、传文件

向目录传一个文件

install -m 777 workflow.xml sftp_home/

6、流程开始

NiFi简介和基本操作(含通过NiFi上传文件到HDFS案例)_第7张图片

查看文件是否上传到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"...

你可能感兴趣的:(NiFi)