Apache NiFi数据流管理架构与处理器生态
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管理