开始之前插入一个题外话,我朋友问了我一个问题,为什么要用Apache NiF?他在什么业务场景下才能使用Apache NiFi?
我开始对于这个问题的回答是结合我自身公司业务情况出发的,我接触Apache NiFi是因为公司有很多系统并且每个系统都有自己的数据工具,希望能有一个数据平台进行统一的管理和监控,并且公司的架构也将Apache NiFi作为数据采集和处理的工具,基于以上我才开始了解和使用Apache NiFi。
但是每家公司不可能业务场景都一样,那么到底要什么样的业务场景才能使用Apache NiFi呢?结合自身的一个了解我总结出:凡是涉及数据To数据的都可以使用上Apache NiFi,小到业务中最常见的调用接口写入数据库,大到用作数据中台,Apache NiFi自身的定位就是数据的万花筒。
好了这个题外话就说到这里,下面正式开始我们这一节的主题Apache NiFi 入门之Demo
假定有这样一个业务场景,通过RestFul接口获取数据并写入文件,下面让我们用Apache NiFi来完成这个业务场景
1.官网下载Apache NiFi
下载地址:Apache NiFi
- Windows系统下载文件名后缀为:bin.zip的文件。
- Linux系统下载文件名后缀为:bin.tar.gz的文件
下载完后,Windows系统将文件解压到指定目录即可,Linux系统执行:tar -zxvf nifi-XXX.bin.tar.gz即可解压到当前目录
2.运行Apache NiFi
这里以Windows系统下的Apache NiFi为例子
-
如图所示,进入解压目录中的bin文件夹。
bin目录 -
点击run-nifi.bat进行启动。
启动 -
如图所示,启动成功。
启动窗口 -
打开浏览器输入:http://localhost:8080/nifi/ ,进入Apache NiFi主界面。
Web界面
3.使用NiFi进行数据获取并写入文件
- 数据采集
-
如图所示,将processor组件拖拽至面板中。
使用processor -
搜索HTTP相关操作的处理器,选择InvokeHTTP处理器,它可以用来获取接口数据。
这里有人肯定会问为什么不使用GetHttp处理器来获取数据,看处理器的名称很容易就知道这是一个Get请求获取数据的处理器,这是因为官方文档已经不建议我们使用这个处理器了,它已经过时了,官方在未来会对这个处理器进行删除,推荐我们使用InvokeHTTP处理器。
选择InvokeHTTP -
右键点击InvokeHTTP处理器,选择Configura,进行处理器配置。
配置InvokeHTTP处理器 -
点击PROPERTIES,然后选择请求方式为Get,并填写你需要请求的接口地址。
PROPERTIES配置 -
点击SCHEDULING,配置接口请求的时间间隔,我们这里设定一天请求接口一次,也支持CRON语法。
配置接口请求时间间隔
-
勾选如图所示的属性。(InvokeHTTP处理器请求响应结果与勾选的属性结果一致时,就不会将请求的数据路由到下游处理器)
配置路由规则 -
将InvokeHTTP处理器连接拖拽至下游UpdateAttribute处理器,InvokeHTTP处理器会匹配路由规则将采集的数据传输到下游UpdateAttribute处理器中。
连接图标拖拽至下游UpdateAttribute处理器 -
拖拽成功后,选中Response属性。
配置路由规则
- 数据处理
-
拖拽处理器图标到面板,搜索并使用UpdateAttribute处理器。
UpdateAttribute处理器 -
右键点击UpdateAttribute处理器,配置一个filename属性给下游处理器进行使用。
配置flowfile属性
添加filename属性 -
配置路由规则,将数据和flowfile属性提供给下游PutFile处理器使用。
配置路由规则
- 数据下沉
-
拖拽处理器图标到面板,搜索并使用PutFile处理器,顾名思义就是将数据写入文件的处理器。
PutFile处理器 -
同样右击选中并配置PutFile处理器。
配置PutFile -
点击PROPERTIES,将数据写入指定的目录中。
配置输出目录
-
勾选PutFile所有关系。(表示PutFile处理器不将处理的结果给到下游处理器)
配置路由规则
-
选中面板点击start
启动面板内的所有处理器
-
图中我们可以很清晰的看到InvokeHTTP处理器输入和输出一条数据、UpdateAttribute处理器也输入和输出一条数据、PutFile处理器只有输入一条数据,没有输出数据。
NiFi执行流程中
最终结果
文件内容