数据集成工具 Apache NiFi

Apache NiFi 介绍

Apache NiFi 是一个功能强大且易于使用的数据集成工具,用于处理和分发数据。它提供了直观的可视化界面,使得用户可以轻松地配置和管理复杂的数据流程。NiFi 的主要特点包括:

  1. 流管理:支持实时数据流的处理和管理。
  2. 易用性:通过拖拽式界面,用户可以轻松构建数据流程。
  3. 安全性:支持数据加密、身份验证和授权。
  4. 可扩展性:支持水平扩展和垂直扩展,可以处理大规模数据。
  5. 灵活的伸缩模型:可以根据需求动态调整资源。

使用示例

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. 启动数据流程

配置完成后,启动数据流程,观察数据的流动和处理结果。

实际应用场景

  1. 日志收集和分析

    • NiFi 可以用于实时收集分布式系统产生的日志,对其进行清洗、转换,并将清洗后的日志发送到中央存储或分析系统(如 ELK Stack,Splunk 等)。这有助于监控系统健康、故障排查和性能优化。
  2. 物联网(IoT)数据处理

    • 对于大规模的物联网设备产生的数据,NiFi 可以用于数据采集、实时流处理和数据传输。它可以从各种传感器、设备和物联网平台中获取数据,并将其导入到数据湖、数据仓库或其他目标系统。
  3. 实时数据仓库构建

    • NiFi 可以集成大数据生态系统,如 Apache Hive、Apache HBase 等,用于构建实时数据仓库。通过将数据从不同来源传输和处理,NiFi 可以确保数据质量、一致性,并提供实时的数据访问和分析能力。
  4. 数据湖管理

    • 在构建数据湖时,NiFi 可以用于数据的采集、清洗、转换和传输。它可以从多个源系统中汇总和集成数据,确保数据湖中的数据质量和一致性。
  5. 云端数据流管理

    • NiFi 在云环境中也有广泛的应用,支持从云端服务中获取数据、传输到云端存储,以及将数据从云端导出到本地环境。这对于云计算场景下的数据流管理非常有帮助。
  6. 企业应用集成

    • NiFi 可以作为企业内部应用集成的工具,通过将不同的应用系统集成在一起,实现数据的自由流动。这有助于优化业务流程、提高效率和减少数据集成的复杂性。
  7. 实时事件处理

    • 对于需要实时响应事件的场景,NiFi 可以用于建立实时数据流处理系统。通过配置处理器,可以在数据流中实时执行各种操作,例如实时过滤、聚合和推送通知。

示例1:Hello World

  1. 添加 进程组 Process Group

  2. 添加 Processor Details

  1. 查看处理结果

示例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到数据库表字段的映射关系。
  • 使用PutSQL处理器执行SQL语句写入数据库

    • ConvertJSONToSQL处理器后连接一个PutSQL处理器。
    • 配置该处理器,选择之前创建的DBCPConnectionPool服务,这样就可以将转换后的SQL语句执行,将JSON数据写入到MySQL数据库中。
相关推荐
货拉拉技术4 分钟前
OceanBase向量检索在货拉拉的探索和实践
后端
转转技术团队23 分钟前
多代理混战?用 PAC(Proxy Auto-Config) 优雅切换代理场景
前端·后端·面试
南囝coding24 分钟前
这几个 Vibe Coding 经验,真的建议学!
前端·后端
阿杆25 分钟前
服务一挂就手忙脚乱?教你用 Amazon Lambda 打造 0 成本服务监控!
后端·自动化运维
德育处主任1 小时前
在亚马逊云上,如何基于 VPC IPAM 的 ALB 公网 IP 预测分配?
后端
不吃肉的羊1 小时前
PHP设置文件上传最大值
后端·php
专注物联网全栈开发1 小时前
ESP32的IRAM用完了怎么优化
后端
雨落倾城夏未凉1 小时前
7.QObject定时器和QTimer定时器的区别
后端·qt
洗澡水加冰1 小时前
RAG系统工程化
后端·aigc
paopaokaka_luck2 小时前
智能推荐社交分享小程序(websocket即时通讯、协同过滤算法、时间衰减因子模型、热度得分算法)
数据库·vue.js·spring boot·后端·websocket·小程序