nifi源码阅读前提

阿帕奇NiFi
ciworkflow systemtests Docker 拉取版本 Slack

Apache NiFi 是一个易于使用、功能强大且可靠的系统来处理和分发数据。

目录
特征
要求
入门
MiNiFi 子项目
注册表子项目
获得帮助
文档
执照
出口管制
特征
Apache NiFi 是为数据流而设计的。它支持高度可配置的数据路由、转换和系统中介逻辑的有向图。它的一些主要功能包括:

基于 Web 的用户界面
设计、控制和监控的无缝体验
多租户用户体验
高度可配置
容错与保证交付
低延迟与高吞吐量
动态优先级
可以在运行时修改流
背压
扩展以利用完整的机器功能
使用零领导者聚类模型向外扩展
数据来源
从头到尾跟踪数据流
为扩展而设计
构建您自己的处理器等
实现快速开发和有效测试
安全的
SSL、SSH、HTTPS、加密内容等…
可插入的细粒度基于角色的身份验证/授权
多个团队可以管理和共享流程的特定部分
最低要求
JDK 8
Apache Maven 3.6.0
入门
通读开发快速入门指南。它将包括有关获取源的本地副本的信息,提供有关问题跟踪的指示,并提供有关开发环境常见问题的一些警告。

有关更全面的开发指南和有关为项目做出贡献的信息,请阅读 NiFi 开发人员指南。

建筑
运行 mvn clean install 或对于并行构建执行 mvn -T 2.0C clean install。

在现代硬件上,并行构建大约需要 15 分钟。

笔记本电脑:nifi myuser$ mvn -T 2.0C 全新安装
[信息] 正在扫描项目…
[信息] 正在检查总共 115 个模块的构建…
…省略了数万行…
[信息] ----------------------------------------------- -------------------------
[信息] 构建成功
[信息] ----------------------------------------------- -------------------------
[信息] 总时间:09:24 分钟(挂钟)
[信息] 完成时间:2015-04-30T00:30:36-05:00
[INFO] 最终内存:173M/1359M
[信息] ----------------------------------------------- -------------------------
运行 mvn clean install -DskipTests 跳过单元测试执行。

部署
将目录更改为 nifi-assembly。目标目录包含二进制档案。

笔记本电脑:nifi myuser$ cd nifi-assembly
笔记本电脑:nifi-assembly myuser$ ls -lhd 目标/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 复制到单独的部署目录。提取发行版将创建一个以版本命名的新目录。

笔记本电脑:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
笔记本电脑:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
笔记本电脑:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
共 0
drwxr-xr-x 10 myuser mygroup 340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
开始
将目录更改为部署位置并运行以下命令以启动 NiFi。

笔记本电脑:~ myuser$ cd ~/example-nifi-deploy/nifi-*
笔记本电脑:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
运行 bin/nifi.sh start 在后台启动 NiFi 并退出。使用 --wait-for-init 和可选的超时时间(以秒为单位),以在退出之前等待完全启动。

笔记本电脑:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
认证
默认配置在启动时生成随机用户名和密码。 NiFi 将生成的凭据写入位于 NiFi 安装目录下的 logs/nifi-app.log 中的应用程序日志。

以下命令可用于在安装了 grep 的操作系统上查找生成的凭据:

笔记本电脑:nifi-1.0.0-SNAPSHOT myuser$ grep 生成的日志/nifi-app*log
NiFi 记录生成的凭据如下:

生成的用户名 [USERNAME]
生成的密码 [PASSWORD]
USERNAME 将是一个由 36 个字符组成的随机 UUID。 PASSWORD 将是一个由 32 个字符组成的随机字符串。生成的凭据将存储在 conf/login-identity-providers.xml 中,密码使用 bcrypt 哈希存储。将这些凭据记录在安全位置以访问 NiFi。

可以使用以下命令将随机用户名和密码替换为自定义凭据:

./bin/nifi.sh set-single-user-credentials <用户名> <密码>
跑步
在 Web 浏览器中打开以下链接以访问 NiFi:https://localhost:8443/nifi

Web 浏览器将显示一条警告消息,表明由于初始化期间生成的自签名证书 NiFi 存在潜在的安全风险。接受潜在的安全风险并继续加载接口是初始开发安装的一个选项。生产部署应提供来自受信任证书颁发机构的证书并更新 NiFi 密钥库和信任库配置。

接受自签名证书后访问 NiFi 将显示登录屏幕。 NiFi 登录屏幕

使用生成的凭据,在用户字段中输入生成的用户名,在密码字段中输入生成的密码,然后选择登录以访问系统。 NiFi Flow 认证屏幕

配置
NiFi 用户指南描述了如何构建数据流。

停止
运行以下命令停止 NiFi:

笔记本电脑:~ myuser$ cd ~/example-nifi-deploy/nifi-*
笔记本电脑:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh 停止
MiNiFi 子项目
MiNiFi 是 Apache NiFi 的子项目。它是一种补充数据收集方法,补充了 NiFi 在数据流管理中的核心原则,专注于在其创建源头收集数据。

MiNiFi 的具体目标包括:

体积小、重量轻
代理的集中管理
数据来源的生成
与 NiFi 集成以进行后续数据流管理和完整的信息监管链
MiNiFi 的角色应该从代理的角度来看待,该代理直接在源传感器、系统或服务器附近或直接与其相邻。

跑步:

将目录更改为“minifi-assembly”。在目标目录中,应该有一个 minifi 的构建。

$ cd minifi-assembly
$ ls -lhd 目标/迷你*
drwxr-xr-x 3 用户工作人员 102B Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin
-rw-r–r-- 1 名用户工作人员 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
-rw-r–r-- 1 个用户员工 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
为了测试正在进行的开发,您可以使用名为“minifi-version-bin”的目录中已经解压的构建,其中 version 是当前项目版本。要部署到另一个位置,请使用 tarball 或 zipfile 并在您喜欢的任何位置解压缩它们。分发将位于以版本命名的公共父目录中。

$ mkdir ~/example-minifi-deploy
$ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
$ ls -lh ~/example-minifi-deploy/
共 0
drwxr-xr-x 10 用户工作人员 340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
运行 MiNiFi:

将目录更改为安装 MiNiFi 的位置并运行它。

$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh 开始
查看日志文件夹中的日志 $ tail -F ~/example-minifi-deploy/logs/minifi-app.log

如需帮助构建您的第一个数据流并将数据发送到 NiFi 实例,请参阅位于 docs 文件夹中的系统管理指南或使用 minifi-toolkit,它有助于将 NiFi 模板调整为 MiNiFi YAML 配置文件格式。

如果您正在测试正在进行的开发,您可能希望停止您的实例。

$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh 停止
Docker 构建
构建:

运行完整的 NiFi 构建(有关说明,请参见上文)。然后从 minifi/ 子目录中,执行 mvn -P docker clean install。这将运行完整的构建,基于它创建一个 docker 镜像,并运行 docker-compose 集成测试。成功完成后,您应该有一个 apacheminifi:${minifi.version} 映像,可以使用以下命令启动它(将 m i n i f i . v e r s i o n 替 换 为 您 分 支 的 当 前 m a v e n 版 本 ) : d o c k e r r u n − d − v Y O U R C O N F I G . Y M L : / o p t / m i n i f i / m i n i f i − {minifi.version} 替换为您分支的当前 maven 版本): docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi- minifi.versionmavendockerrundvYOURCONFIG.YML:/opt/minifi/minifi{minifi.version}/conf/config.yml apacheminifi:${minifi.version}
注册表子项目
Registry(Apache NiFi 的一个子项目)是一个补充应用程序,它为跨一个或多个 NiFi 和/或 MiNiFi 实例的共享资源的存储和管理提供了一个中央位置。

开始注册
构建 NiFi(请参阅 NiFi 入门)
或者

仅构建 Registry 子项目:

cd nifi/nifi-registry
mvn 全新安装
如果您希望启用样式和许可证检查,请指定 contrib-check 配置文件:

mvn clean install -Pcontrib-check
启动注册表

cd nifi-registry/nifi-registry-assembly/target/nifi-registry–bin/nifi-registry-/ ./bin/nifi-registry.sh start

请注意,应用程序 Web 服务器在可访问之前可能需要一段时间才能加载。

访问应用程序 Web UI
使用默认设置,应用程序 UI 将在 http://localhost:18080/nifi-registry 可用

访问应用程序 REST API
如果您希望针对应用程序 REST API 进行测试,您可以直接访问 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 配置文件用于控制可用于 Spring 应用程序上下文的 DataSource 工厂。提供的数据源工厂使用 Testcontainers 框架为给定的数据库启动 Docker 容器并创建相应的数据源。如果未指定配置文件,则默认情况下将使用 H2 数据源,并且不需要 Docker 容器。

假设 Docker 正在运行构建的系统上运行,那么可以运行以下命令:

目标数据库构建命令
所有支持的 mvn verify -Ptest-all-dbs
H2(默认) mvn 验证
PostgreSQL 9.x mvn 验证 -Dspring.profiles.active=postgres
PostgreSQL 10.x mvn 验证 -Dspring.profiles.active=postgres-10
MySQL 5.6 mvn 验证 -Pcontrib-check -Dspring.profiles.active=mysql-56
MySQL 5.7 mvn 验证 -Pcontrib-check -Dspring.profiles.active=mysql-57
MySQL 8 mvn verify -Pcontrib-check -Dspring.profiles.active=mysql-8
当 Testcontainer 配置文件之一被激活时,测试输出应显示指示容器已启动的日志,例如:

2019-05-15 16:14:45.078 INFO 66091 — [main] 🐳 [mysql:5.7]:为图像创建容器:mysql:5.7
2019-05-15 16:14:45.145 INFO 66091 — [main] o.t.utility.RegistryAuthLocator:使用凭证助手/存储(docker-credential-osxkeychain)时找不到主机(index.docker.io)的凭证
2019-05-15 16:14:45.646 INFO 66091 — [main] 🐳 [mysql:5.7] : 启动容器,ID:ca85c8c5a1990d2a898fad04c5897ddcdb3a9405e692f7f75c70cc1
2019-05-15 16:14:46.437 INFO 66091 — [main] 🐳 [mysql:5.7] : 容器 mysql:5.7 正在启动:ca85c8c5a1990d2a898fad04c5897ddcdb3a95fc5c5c5c5c5c5c5c5c15
2019-05-15 16:14:46.479 INFO 66091 — [main] 🐳 [mysql:5.7]:等待数据库连接在 jdbc:mysql://localhost:33051/test?useSSL=false&allowPublicKeyRetrieval=true使用查询“SELECT 1”
Flyway 连接还应指明给定的数据库:

2019-05-15 16:15:02.114 INFO 66091 — [main] o.a.n.r.db.CustomFlywayConfiguration:确定的数据库类型是 MYSQL
2019-05-15 16:15:02.115 INFO 66091 — [ main] o.a.n.r.db.CustomFlywayConfiguration :将迁移位置设置为 [classpath:db/migration/common, classpath:db/migration/mysql]
2019-05-15 16:15:02.373 INFO 66091 — [主要] o.a.n.r.d.CustomFlywayMigrationStrategy:第一次初始化数据库…
2019-05-15 16:15:02.380 INFO 66091 — [主要] o.f.c.internal.license.VersionPrinter:Flyway Community Edition 5.2.1 by Boxfuse
2019-05-15 16:15:02.403 INFO 66091 — [main] o.f.c.internal.database.DatabaseFactory :数据库:jdbc:mysql://localhost:33051/test (MySQL 5.7)
有关可用数据源工厂的完整列表,请参阅 nifi-registry-test 模块。

获得帮助
如果您有任何疑问,可以联系我们的邮件列表:dev@nifi.apache.org(存档)。对于更具互动性的讨论,通常可以在以下位置找到社区成员:

Apache NiFi Slack 工作区:https://apachenifi.slack.com/

新用户可以使用以下邀请链接加入工作区。

IRC:irc.freenode.net 上的#nifi

要提交功能请求或错误报告,请在 https://issues.apache.org/jira/projects/NIFI/issues 提交 Jira。如果这是安全漏洞报告,请直接发送电子邮件至 security@nifi.apache.org 并首先查看 Apache NiFi 安全漏洞披露和 Apache 软件基金会安全流程。

文档
有关最新的 NiFi 文档,请参阅 https://nifi.apache.org/

有关最新的 MiNiFi 特定文档,请参阅 https://nifi.apache.org/minifihttps://cwiki.apache.org/confluence/display/MINIFI

有关最新的特定于注册表的文档,请参阅 https://nifi.apache.org/registry

执照
除非另有说明,本软件已根据 Apache 许可证 2.0 版获得许可

根据 Apache 许可,版本 2.0(“许可”)获得许可;除非遵守许可,否则您不得使用此文件。您可以在以下网址获取许可证副本

https://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可分发的软件是按“原样”分发的,没有任何类型的明示或暗示的保证或条件。请参阅许可证以了解管理许可证下的许可和限制的特定语言。

出口管制
此发行版包括加密软件。您当前居住的国家/地区可能对加密软件的进口、拥有、使用和/或再出口到另一个国家/地区有限制。在使用任何加密软件之前,请查看您所在国家/地区有关加密软件的进口、拥有或使用和再出口的法律、法规和政策,以了解是否允许这样做。有关更多信息,请参阅 https://www.wassenaar.org/。

美国政府商务部工业和安全局 (BIS) 已将此软件归类为出口商品控制编号 (ECCN) 5D002.C.1,其中包括使用或执行非对称算法加密功能的信息安全软件。此 Apache 软件基金会分发的形式和方式使其有资格根据许可证例外 ENC 技术软件不受限制 (TSU) 例外(参见 BIS 出口管理条例,第 740.13 节)导出目标代码和源代码。

以下提供了有关包含的加密软件的更多详细信息:

Apache NiFi 使用 BouncyCastle、JCraft Inc. 和用于 SSL、SSH 和敏感配置参数保护的内置 Java 加密库。看

https://bouncycastle.org/about.html
http://www.jcraft.com/c-info.html
https://www.oracle.com/corporate/security-practices/corporate/governance/global-trade-compliance.html
有关这些库加密功能的更多详细信息。

编译完成:其中如全部编译,电脑也需安装node,编译时间较久…
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值