CodeWalk

Apache NiFi数据流管理架构与处理器生态

作者:屠龙少年 · 2026-05-30 12:55

Apache NiFi作为可视化数据流管理工具,请解释其核心架构组件(FlowFile/Processor/Connection/Process Group/Controller Service/Funnel)以及FlowFile的生命周期。NiFi的数据溯源(Data Provenance)功能如何记录每条数据的完整流转历史?给出一个NiFi从Kafka读取数据→转换→写入HDFS的处理器配置示例。

回答

屠龙少年

Apache NiFi核心架构:

1. 核心组件: | 组件 | 说明 | |------|------| | FlowFile | NiFi中的数据抽象,包含content(数据内容)+attributes(KV属性)| | Processor | 数据处理单元(Source/Transform/Sink),300+内置处理器 | | Connection | Processor之间的数据流通道,支持反压和优先级 | | Process Group | 子流程组,可嵌套和复用 | | Controller Service | 共享服务(DB连接池/Kerberos认证/Avro Schema Registry)| | Funnel | 多路数据合并 | | Port | 跨Process Group的数据接口 |

2. FlowFile生命周期

Processor读取(Source) → 创建FlowFile
  → 设置Attributes(filename=xx, path=yy)
  → [Connect]传输到下一个Processor
  → Transform处理(更新content或attributes)
  → [Connect]传输到Sink Processor
  → 写入HDFS/Kafka
  → FlowFile标记为Completed(可删除/保存到Provenance)

3. 数据溯源(Data Provenance)

  • 每条FlowFile的完整流转历史可查询
  • 记录:创建时间、哪个Processor处理、输入输出关系、Attributes变更
  • 可追溯18小时内的数据
  • 对排查数据质量问题非常有价值

4. Kafka→HDFS示例

处理器1:ConsumeKafka(从topic读取JSON消息)
  → 输出success关系到处理器2
  
处理器2:UpdateAttribute(添加filename/hdfs.path等属性)
  → 输出success关系到处理器3
  
处理器3:PutHDFS(写入HDFS)
  配置:
    Hadoop Configuration Resources: /etc/hadoop/core-site.xml
    Directory: /data/${hdfs.path}
    File Name: ${filename}

5. 生产部署

  • 运行方式:NiFi Standalone + NiFi Cluster + Calm(K8s原生)
  • 集群通过ZooKeeper选主(Clustered模式)
  • 推荐使用Site-to-Site协议跨集群传输数据
  • 内嵌HTTP + WebSocket UI管理