数据集成工具 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数据库中。
相关推荐
uhakadotcom11 分钟前
JDK 24新特性解读:提升性能、安全性和开发效率
后端·面试·github
盖世英雄酱5813633 分钟前
设计模式在Springboot都用在哪些地方呢
java·后端
逸风尊者37 分钟前
开发易忽视的问题:内存溢出/泄漏案例
java·后端·面试
Emma歌小白42 分钟前
在 Windows/Mac/Linux 上安装 Java(JDK)
java·后端
涡能增压发动积1 小时前
SpringAI-MCP技术初探
人工智能·后端·架构
thePLJ1 小时前
SpringBoot-已添加并下载的依赖,reload和mvn clean 后还是提示找不到jar包问题
java·spring boot·后端
余华余华1 小时前
输入输出 数组 冒泡排序举例
java·后端
俞嫦曦1 小时前
R语言的回归测试
开发语言·后端·golang
JalenYan2 小时前
Ruby on Rails 中的 Delegated Types(委托类型)
后端·ruby on rails·ruby
hxung2 小时前
spring bean的生命周期和循环依赖
java·后端·spring