搬瓦工部署 Apache NiFi 数据集成平台教程
Apache NiFi 是由美国国家安全局(NSA)开发并开源的数据集成平台,专门用于自动化数据在不同系统之间的流转。NiFi 提供了基于浏览器的可视化界面,用户可以通过拖拽方式设计数据流,无需编写代码即可完成数据的采集、转换和分发。本文将介绍如何在搬瓦工 VPS 上通过 Docker 部署 Apache NiFi。部署前请确保已安装 Docker 和 Docker Compose。
一、NiFi 功能特性
- 可视化数据流设计:通过 Web 界面拖拽处理器和连接器来构建数据管道。
- 300+ 内置处理器:涵盖文件操作、HTTP 请求、数据库读写、Kafka 交互、JSON/XML/CSV 转换等。
- 数据溯源:记录每条数据从进入到离开系统的完整轨迹。
- 背压机制:内置流量控制,防止下游系统被数据洪流淹没。
- 优先级队列:支持按照数据属性设置处理优先级。
- 安全传输:支持 SSL/TLS 加密和多种认证方式。
二、系统要求
- 操作系统:Ubuntu 20.04+ 或 Debian 11+。
- 内存:至少 2GB,推荐 4GB 以上(NiFi 基于 Java,内存需求较高)。
- 磁盘:至少 10GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose。
建议选择搬瓦工 THE PLAN 或更高配置。购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买链接:bwh81.net。
三、创建项目目录
mkdir -p /opt/nifi/{conf,state,database,flowfile,content,provenance,logs}
cd /opt/nifi
四、编写 Docker Compose 配置
cat > /opt/nifi/docker-compose.yml <<'EOF'
version: '3.8'
services:
nifi:
image: apache/nifi:latest
restart: always
ports:
- "8443:8443"
environment:
SINGLE_USER_CREDENTIALS_USERNAME: admin
SINGLE_USER_CREDENTIALS_PASSWORD: your_admin_password_here
NIFI_WEB_HTTPS_PORT: 8443
NIFI_JVM_HEAP_INIT: 512m
NIFI_JVM_HEAP_MAX: 1g
volumes:
- nifi_conf:/opt/nifi/nifi-current/conf
- nifi_state:/opt/nifi/nifi-current/state
- nifi_db:/opt/nifi/nifi-current/database_repository
- nifi_flowfile:/opt/nifi/nifi-current/flowfile_repository
- nifi_content:/opt/nifi/nifi-current/content_repository
- nifi_provenance:/opt/nifi/nifi-current/provenance_repository
- nifi_logs:/opt/nifi/nifi-current/logs
volumes:
nifi_conf:
nifi_state:
nifi_db:
nifi_flowfile:
nifi_content:
nifi_provenance:
nifi_logs:
EOF
注意:密码必须至少 12 个字符,且包含大小写字母和数字。
五、启动服务
cd /opt/nifi
docker compose up -d
NiFi 启动较慢,通常需要 1-2 分钟。查看日志确认启动状态:
docker compose logs -f nifi
启动完成后访问 https://your_server_ip:8443/nifi(注意是 HTTPS),使用设置的用户名和密码登录。
六、构建第一个数据流
以下是一个从 HTTP API 获取数据并写入文件的简单示例:
- 从工具栏拖拽一个 Processor 到画布上,选择 InvokeHTTP。
- 双击处理器进入配置,设置 Remote URL 为目标 API 地址。
- 再拖拽一个 PutFile 处理器,设置输出目录。
- 将 InvokeHTTP 的 Response 关系连接到 PutFile。
- 右键选择 Start 启动整个数据流。
七、常用处理器介绍
- GetFile / PutFile:文件系统的读取和写入。
- InvokeHTTP:发送 HTTP 请求并获取响应。
- ExecuteSQL / PutDatabaseRecord:数据库查询和写入。
- ConvertRecord:数据格式转换(JSON、CSV、Avro 等)。
- PublishKafka / ConsumeKafka:Kafka 消息的生产和消费。
- SplitJson / EvaluateJsonPath:JSON 数据的拆分和字段提取。
- RouteOnAttribute:根据数据属性进行条件路由。
八、JVM 内存调优
根据 VPS 内存调整 NiFi 的 JVM 参数:
# 2GB VPS
NIFI_JVM_HEAP_INIT: 512m
NIFI_JVM_HEAP_MAX: 1g
# 4GB VPS
NIFI_JVM_HEAP_INIT: 1g
NIFI_JVM_HEAP_MAX: 2g
九、数据备份
NiFi 的数据流定义存储在 flow.json.gz 文件中:
# 备份数据流配置
docker cp $(docker compose ps -q nifi):/opt/nifi/nifi-current/conf/flow.json.gz /opt/nifi/backup_flow_$(date +%Y%m%d).json.gz
十、常见问题
无法访问 Web 界面
NiFi 默认使用 HTTPS,确保使用 https:// 前缀访问。如果使用自签名证书,浏览器会提示安全警告,选择继续访问即可。
处理器报错
右键点击处理器选择 View status history 查看历史状态,在 Bulletin Board 中查看具体的错误消息。
总结
Apache NiFi 是企业级的数据集成平台,特别适合需要在多个系统之间自动化传输和转换数据的场景。它的可视化设计方式降低了数据管道构建的门槛。如果你需要代码化的数据编排方案,可以参考 Apache Airflow 或 Dagster。选购搬瓦工 VPS 使用优惠码 NODESEEK2026 可享 6.77% 折扣。