Apache NiFi 是一个易于使用、功能强大且可靠的数据处理和分发系统。
Apache NiFi 专为数据流而设计。它支持高度可配置的有向图,用于数据路由、转换和系统中介逻辑。其一些关键特性包括:
阅读开发快速入门指南。 该指南包含获取本地源代码副本的信息,介绍问题跟踪的方法,并提供一些关于开发环境常见问题的警告。
如需更全面的开发指南以及关于为项目做贡献的信息,请阅读 NiFi 开发者指南。
运行 mvn clean install 或为了并行构建执行 mvn -T 2.0C clean install。
在现代硬件上,并行构建应需要大约十五分钟。
laptop:nifi myuser$ mvn -T 2.0C clean install
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 115 modules...
...tens of thousands of lines elided...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:24 min (Wall Clock)
[INFO] Finished at: 2015-04-30T00:30:36-05:00
[INFO] Final Memory: 173M/1359M
[INFO] ------------------------------------------------------------------------
运行 mvn clean install -DskipTests 以跳过单元测试执行。
切换到 nifi-assembly 目录。target 目录包含二进制归档文件。
laptop:nifi myuser$ cd nifi-assembly
laptop:nifi-assembly myuser$ ls -lhd target/nifi*
drwxr-xr-x 3 myuser mygroup 102B Apr 30 00:29 target/nifi-1.0.0-SNAPSHOT-bin
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.zip
将 nifi-VERSION-bin.tar.gz 或 nifi-VERSION-bin.zip 复制到单独的部署目录。
解压分发版将创建一个以版本号命名的新目录。
laptop:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
laptop:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
laptop:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
total 0
drwxr-xr-x 10 myuser mygroup 340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
切换到部署位置并运行以下命令以启动 NiFi。
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
运行 bin/nifi.sh start 会在后台启动 NiFi 并退出。使用 --wait-for-init 并带上可选的超时时间(秒),可等待完全启动后再退出。
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
默认配置会在启动时生成随机用户名和密码。NiFi 将生成的凭据写入位于 NiFi 安装目录下 logs/nifi-app.log 的应用日志中。
在安装了 grep 的操作系统上,可以使用以下命令查找生成的凭据:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi 记录生成的凭据如下:
Generated Username [USERNAME]
Generated Password [PASSWORD]
USERNAME 是一个由 36 个字符组成的随机 UUID。PASSWORD 是一个由 32 个字符组成的随机字符串。生成的凭据将存储在 conf/login-identity-providers.xml 中,密码使用 bcrypt 哈希存储。请将这些凭据记录在安全的位置,以便访问 NiFi。
可以使用以下命令将随机用户名和密码替换为自定义凭据:
./bin/nifi.sh set-single-user-credentials <username> <password>
在 Web 浏览器中打开以下链接以访问 NiFi:https://localhost:8443/nifi
由于 NiFi 在初始化期间生成了自签名证书,Web 浏览器会显示警告消息,提示潜在的安全风险。对于初始开发安装,可以选择接受潜在安全风险并继续加载界面。生产部署应从受信任的证书颁发机构获取证书,并更新 NiFi 的密钥库和信任库配置。
接受自签名证书后访问 NiFi 将显示登录界面。

使用生成的凭据,在 User 字段中输入生成的用户名,在 Password 字段中输入生成的密码,然后选择 LOG IN 登录系统。

NiFi 用户指南 描述了如何构建数据流。
运行以下命令以停止 NiFi:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi 是 Apache NiFi 的子项目。它是一种补充性的数据采集方法,补充了 NiFi 在数据流管理方面的核心理念,专注于在数据创建源头进行数据采集。
MiNiFi 的具体目标包括:
对 MiNiFi 角色的理解应从代理的角度出发,该代理直接或紧邻源传感器、系统或服务器运行。
运行方法:
切换到 'minifi-assembly' 目录。在 target 目录中,应该有一个 minifi 的构建产物。
$ cd minifi-assembly
$ ls -lhd target/minifi*
drwxr-xr-x 3 user staff 102B Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
对于持续开发的测试,你可以直接使用当前目录中已解压的构建产物,目录名为 "minifi-版本-bin",其中 版本 是当前项目版本。要部署到其他位置,可以使用 tarball 或 zipfile,并将其解压到你喜欢的任何位置。分发版将位于一个以版本号命名的公共父目录中。
$ mkdir ~/example-minifi-deploy
$ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
$ ls -lh ~/example-minifi-deploy/
total 0
drwxr-xr-x 10 user staff 340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
运行 MiNiFi:
切换到 MiNiFi 的安装位置并运行。
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
查看位于 logs 文件夹中的日志 $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
如需帮助构建你的第一个数据流并将数据发送到 NiFi 实例,请参阅 docs 文件夹中的 System Admin Guide,或使用 minifi-toolkit,该工具帮助将 NiFi 模板适配为 MiNiFi YAML 配置文件格式。
如果你正在测试持续开发,可能需要停止实例。
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
构建方法:
mvn -P docker clean install。这将运行完整构建,基于该构建创建 Docker 镜像,并运行 docker-compose 集成测试。成功完成后,你将获得一个名为 apacheminifi:${minifi.version} 的镜像,可以使用以下命令启动(将 ${minifi.version} 替换为你分支当前的 Maven 版本):docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
Registry——Apache NiFi 的子项目——是一个补充性应用程序,提供了一个中心位置,用于存储和管理跨一个或多个 NiFi 和/或 MiNiFi 实例的共享资源。
或
仅构建 Registry 子项目:
cd nifi/nifi-registry
mvn clean install
如果希望启用风格和许可证检查,请指定 contrib-check 配置文件:
mvn clean install -Pcontrib-check
2) 启动 Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
请注意,应用程序 Web 服务器需要一段时间加载后才能访问。
使用默认设置,应用程序 UI 将在 http://localhost:18080/nifi-registry 可用
如果你想测试应用程序 REST API,可以直接访问它。使用默认设置,REST API 的基础 URL 为 http://localhost:18080/nifi-registry-api。用于测试 REST API 的 UI 将在 http://localhost:18080/nifi-registry-api/swagger/ui.html 可用
日志将位于 logs/nifi-registry-app.log
为了确保 NiFi Registry 在不同关系数据库上正确工作,可以利用 Testcontainers 框架 针对不同数据库运行现有的集成测试。
Spring 配置文件用于控制可用的 DataSource 工厂,这些工厂会提供给 Spring 应用程序上下文。提供的 DataSource 工厂使用 Testcontainers 框架为给定数据库启动一个 Docker 容器并创建相应的 DataSource。如果未指定配置文件,则默认使用 H2 DataSource,无需 Docker 容器。
假设构建运行的系统上 Docker 正在运行,则可以运行以下命令:
有关可用 DataSource 工厂的完整列表,请参阅 nifi-registry-test 模块。
如果你有问题,可以联系我们的邮件列表:[email protected] (存档)。对于更多互动讨论,社区成员通常可以在以下位置找到:
Apache NiFi Slack 工作区:https://apachenifi.slack.com/
新用户可以使用以下 邀请链接 加入工作区。
若要提交功能请求或错误报告,请在 https://issues.apache.org/jira/projects/NIFI/issues 上提交 Jira。如果是安全漏洞报告,请直接发送电子邮件至 [email protected],并首先查看 Apache NiFi 安全漏洞披露 和 Apache 软件基金会安全 流程。
请访问 https://nifi.apache.org/ 获取最新的 NiFi 文档。
请访问 https://nifi.apache.org/minifi 和 https://cwiki.apache.org/confluence/display/MINIFI 获取最新的 MiNiFi 专用文档。
请访问 https://nifi.apache.org/registry 获取最新的 Registry 专用文档。
除非另有说明,本软件根据 Apache License, Version 2.0 许可。
根据 Apache License, Version 2.0(“许可证”)进行许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下位置获取许可证副本:
https://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,根据许可证分发的软件是按“原样”分发的, 不附带任何明示或暗示的保证或条件。 请参阅许可证以了解管理权限和限制的具体语言。
此发行版包含加密软件。您目前所在的国家/地区可能对加密软件的进口、持有、使用和/或再出口到其他国家/地区有限制。在使用任何加密软件之前,请检查您所在国家/地区关于加密软件进口、持有、使用和再出口的法律、法规和政策,以确认是否允许。更多信息请参阅 https://www.wassenaar.org/。
美国商务部工业与安全局 (BIS) 已将此软件分类为出口管制商品编号 (ECCN) 5D002.C.1,其中包括使用或执行具有非对称算法的密码功能的信息安全软件。此 Apache 软件基金会的分发形式和方式使其有资格根据 License Exception ENC Technology Software Unrestricted (TSU) 例外(见 BIS 出口管理条例第 740.13 节)进行出口,包括目标代码和源代码。
以下提供了有关所含加密软件的更多详细信息:
Apache NiFi 使用 BouncyCastle、JCraft Inc. 以及内置的 Java 加密库来实现 SSL、SSH 和保护敏感配置参数。请参阅
了解有关这些库加密功能的更多细节。
| 目标数据库 | 构建命令 |
|---|
| 所有支持的数据库 | mvn verify -Ptest-all-dbs |
| H2 (默认) | mvn verify |
| MariaDB 10.3 | mvn verify -Pcontrib-check -Dspring.profiles.active=mariadb-10-3 |
| MySQL 8 | mvn verify -Pcontrib-check -Dspring.profiles.active=mysql-8 |
| PostgreSQL 10 | mvn verify -Dspring.profiles.active=postgres-10 |