Apache NiFi 介绍
Apache NiFi 是一个功能强大且易于使用的数据集成工具,用于处理和分发数据。它提供了直观的可视化界面,使得用户可以轻松地配置和管理复杂的数据流程。NiFi 的主要特点包括:
- 流管理:支持实时数据流的处理和管理。
- 易用性:通过拖拽式界面,用户可以轻松构建数据流程。
- 安全性:支持数据加密、身份验证和授权。
- 可扩展性:支持水平扩展和垂直扩展,可以处理大规模数据。
- 灵活的伸缩模型:可以根据需求动态调整资源。
使用示例
1. 下载和安装 NiFi
nifichina.github.io/1-%E5%9F%BA...
首先,从 Apache NiFi 官方网站下载最新的稳定版本。安装过程通常只需解压缩下载的压缩包,然后运行 NiFi 启动脚本。
bash复制
bash
tar -xzf nifi-<version>.tar.gz
cd nifi-<version>
./bin/nifi.sh start
2. 访问 NiFi 控制台
启动后,你可以在浏览器中访问 http://localhost:8080/nifi
来打开 NiFi 控制台。默认情况下,NiFi 控制台运行在 8080 端口。
3. 创建第一个数据流程
在 NiFi 控制台中,你将看到一个空白的工作区。要创建你的第一个数据流程,点击左侧菜单栏中的 "+ Create",然后选择 "New Process Group"。为你的新流程组命名,然后点击 "Create"。
4. 添加处理器和连接器
在新创建的流程组中,你可以开始添加处理器和连接器来构建你的数据流程。点击 "Operate" 面板,然后拖动处理器(Processor)到工作区。处理器是用于执行各种数据操作的组件,如数据获取、转换、过滤等。
连接处理器之间的连接器(Connection)来定义数据流的方向。拖动连接器连接处理器的输出和输入端口,以建立数据流的路径。
5. 配置处理器
点击添加的处理器,然后在右侧面板中配置它。根据处理器类型,你可能需要配置数据源、目标、属性等信息。配置过程是可视化的,通常有直观的用户界面。
6. 启动数据流程
配置完成后,启动数据流程,观察数据的流动和处理结果。
实际应用场景
-
日志收集和分析:
- NiFi 可以用于实时收集分布式系统产生的日志,对其进行清洗、转换,并将清洗后的日志发送到中央存储或分析系统(如 ELK Stack,Splunk 等)。这有助于监控系统健康、故障排查和性能优化。
-
物联网(IoT)数据处理:
- 对于大规模的物联网设备产生的数据,NiFi 可以用于数据采集、实时流处理和数据传输。它可以从各种传感器、设备和物联网平台中获取数据,并将其导入到数据湖、数据仓库或其他目标系统。
-
实时数据仓库构建:
- NiFi 可以集成大数据生态系统,如 Apache Hive、Apache HBase 等,用于构建实时数据仓库。通过将数据从不同来源传输和处理,NiFi 可以确保数据质量、一致性,并提供实时的数据访问和分析能力。
-
数据湖管理:
- 在构建数据湖时,NiFi 可以用于数据的采集、清洗、转换和传输。它可以从多个源系统中汇总和集成数据,确保数据湖中的数据质量和一致性。
-
云端数据流管理:
- NiFi 在云环境中也有广泛的应用,支持从云端服务中获取数据、传输到云端存储,以及将数据从云端导出到本地环境。这对于云计算场景下的数据流管理非常有帮助。
-
企业应用集成:
- NiFi 可以作为企业内部应用集成的工具,通过将不同的应用系统集成在一起,实现数据的自由流动。这有助于优化业务流程、提高效率和减少数据集成的复杂性。
-
实时事件处理:
- 对于需要实时响应事件的场景,NiFi 可以用于建立实时数据流处理系统。通过配置处理器,可以在数据流中实时执行各种操作,例如实时过滤、聚合和推送通知。
示例1:Hello World
-
添加 进程组 Process Group
-
添加 Processor Details
- 查看处理结果
示例2:集成RESTFUL API 并解析
1: 添加处理器 InvokeHTTP 2.2.0
2: 解析JSON EvaluateJsonPath 2.2.0
示例3:将API JSON 文件写入 MYSQL
1. 调用需要token认证的API
-
使用InvokeHTTP处理器获取token:
-
拖动一个
InvokeHTTP
处理器到NiFi画布。 -
配置该处理器的属性:
- HTTP Method:选择适合的请求方法,如POST。
- Remote URL:填写认证API的地址。
- SSL Context Service:如果需要SSL加密,配置相应的SSL上下文服务。
-
在处理器的属性中设置请求体,包含认证所需的用户名和密码等信息。
-
执行该处理器后,响应体中将包含token信息。
-
2. 将获取到的token代入业务接口header
-
使用EvaluateJsonPath处理器提取token:
- 在
InvokeHTTP
处理器后连接一个EvaluateJsonPath
处理器。 - 配置该处理器以从上一步的响应体中提取token,例如设置动态属性
token
,其值为$.access_token
(具体路径根据API返回的JSON结构确定)。
- 在
-
使用UpdateAttribute处理器设置header:
- 在
EvaluateJsonPath
处理器后连接一个UpdateAttribute
处理器。 - 在该处理器的属性中,设置一个新的属性(如
Authorization
),其值为Bearer ${token}
,这样就将提取到的token添加到了请求header中。
- 在
3. 调用业务接口获取JSON数据
-
再次使用InvokeHTTP处理器调用业务接口:
-
在
UpdateAttribute
处理器后连接另一个InvokeHTTP
处理器。 -
配置该处理器的属性:
- HTTP Method:根据业务接口的要求选择方法,如GET或POST。
- Remote URL:填写业务接口的地址。
- Headers :在
Header
属性中添加之前设置的Authorization
属性,使其值为${Authorization}
,这样就将token包含在请求header中发送给业务接口。
-
执行该处理器后,将从业务接口获取到包含数据的JSON响应体。
-
4. 将JSON返参文件写入MySQL
-
使用ConvertJSONToSQL处理器转换JSON为SQL语句:
- 在获取JSON数据的
InvokeHTTP
处理器后连接一个ConvertJSONToSQL
处理器。 - 配置该处理器,指定与MySQL数据库连接的DBCPConnectionPool服务,并设置JSON到数据库表字段的映射关系。
- 在获取JSON数据的
-
使用PutSQL处理器执行SQL语句写入数据库:
- 在
ConvertJSONToSQL
处理器后连接一个PutSQL
处理器。 - 配置该处理器,选择之前创建的DBCPConnectionPool服务,这样就可以将转换后的SQL语句执行,将JSON数据写入到MySQL数据库中。
- 在