Apache NiFi 教程
Apache NiFi 教程摘要
这篇 Apache NiFi 教程从零开始,涵盖了从基础到高级的所有主题。您将学习 NiFi 的定义、历史、架构、特性、安装过程、用例等概念。您还将了解为什么需要使用 Apache NiFi 以及运行 Apache NiFi 的最佳实践。
什么是 Apache NiFi?
Apache NiFi 是一款开源软件,用于自动化和管理系统之间的数据流。它是一个强大且可靠的系统,用于处理和分发数据。它提供基于 Web 的用户界面来创建、监控和控制数据流。它具有高度可配置和可修改的数据流处理能力,可在运行时修改数据。
通过开发自定义组件,Apache NiFi 可以轻松扩展。
为什么使用 Apache NiFi?
以下是使用 Apache NiFi 的原因:
- 允许您进行数据摄取,从众多数据源将数据拉入 NiFi,并创建流文件 (flow files)
- 它提供实时控制,帮助您管理任何源与目标之间的数据移动
- 在企业级别可视化数据流
- 提供通用的工具和扩展
- 允许您利用现有的库和 Java 生态系统的功能
- 帮助组织将 NiFi 与其现有基础设施集成
- NiFi 设计为可横向扩展的集群,提供有保障的数据交付
- 在流公告 (flow bulletin) 中可视化和监控性能、行为,提供洞察和内联文档
- 帮助您单独或在组级别启动和停止组件
- 它帮助您监听、获取、拆分、聚合、路由、转换和拖放数据流
Apache NiFi 的历史
- 在美国国家安全局(NSA)开发超过八年
- 2014年 - 它被捐赠给 Apache 软件基金会
- 2015年 - NiFi 成为 Apache 项目套件的正式组成部分
- 从那时起,Apache NiFi 每 6-8 周发布一次新更新
NiFi 架构
Apache NiFi 拥有一个经过深思熟虑的架构。一旦从外部源获取数据,它在 Apache NiFi 架构中被表示为 FlowFile。
以下是 NiFi 架构的关键组件:
NiFi 组件 | 描述 |
---|---|
FlowFile | FlowFile 是附加了元信息的原始数据。它不仅允许您处理 CSV 或其他基于记录的数据,还允许处理图片、视频、音频或任何其他二进制数据。 |
FlowFile 处理器 | 执行工作的组件,作为 NiFi 中数据流的构建块。 |
流控制器 | 记录进程之间如何连接。它管理所有进程使用的线程及其分配。 |
Web 服务器 | Web 服务器承载 NiFi 基于 HTTP 的命令和 API。 |
扩展 | 有多种类型的 NiFi 扩展,它们在 JVM 内部运行和执行。 |
连接 | 作为处理器之间的链接,包含一个队列和影响数据路由的关系。 |
背压 | 通过控制队列中可存储的流文件数量或数据大小,防止系统被数据淹没。 |
进程组 | 进程组是一组进程及其连接,通过端口接收和发送数据。 |
FlowFile 存储库 | 在 FlowFile 存储库中,NiFi 跟踪它所知道的、在流中活动的给定 FlowFile 的状态详情。 |
内容存储库 | 内容存储库是给定 FlowFile 的实际内容字节存在的地方。 |
Provenance 存储库 | Provenance 存储库是收集所有 provenance 事件数据的地方。 |
Apache NiFi 的特性
- NiFi 支持所有排队数据的缓冲,并提供背压能力,因为这些队列可能会达到指定的限制
- NiFi 允许设置一个或多个优先级方案
- 为许多数据源提供连接处理器
- 支持任何运行 Java 的设备
- 非常适合连接性有限的场所
- 支持故障排除和流优化
- 提供基于角色的身份验证/授权
- 允许下载、恢复和重放单个文件
- 构建您自己的处理器、控制器服务等
- 提供内容加密、通过安全协议进行通信
- 实现快速开发和有效测试
- 允许开发简单的单一功能组件,这些组件可以被重用和组合以构成更复杂的流程
- 允许类加载器隔离,以便更轻松地管理依赖关系
如何安装 Apache NiFi
以下是安装 Apache NiFi 的分步过程
第 1 步) 访问此链接,
然后点击“Continue to Subscribe”(继续订阅)
第 2 步) 在下一页,
点击“Accept Terms”(接受条款)
第 3 步) 您将看到此页面,
感谢您订阅此产品!我们正在处理您的请求。
第 4 步) 5 分钟后刷新页面。
点击“Continue to Configuration”(继续配置)
第 5 步) 在下一页,
保持默认设置并点击“Continue to Launch”(继续启动)
第 6 步) 在下一页,
点击启动。您可能需要创建一个密钥
第 7 步) 您将看到此成功消息。
恭喜!该软件的实例已成功部署在 EC2 上!
第 8 步) 请注意,
EC2 实例的实例 ID 和公共 DNS
第 9 步) 在安全组中,
为入站和出站添加所有流量规则
第 10 步) 要访问 NiFi,
只需使用 URL
http://publicdns:8080/nifi
在我们的例子中,它变为
http://ec2-100-26-156-57.compute-1.amazonaws.com:8080/nifi/
用户:admin
密码:实例 ID
第 11 步) 您将看到,
NiFi 主屏幕
NiFi 用例
以下是 Apache NiFi 的用例列表
行业 | 用途 |
---|---|
保险业 |
|
医疗保健 |
|
电信业 |
|
制造业 |
|
石油和天然气行业 |
|
金融服务 |
|
运行 Apache NiFi 的最佳实践
- 最好在 NiFi 中分离测试/开发/生产环境
- 您应该将您的流程分解为进程组
- 使用命名约定,使用注释和标签
- 将您的项目组织为三个部分:摄取、测试和监控
- 为变量使用唯一的名称
NiFi 的缺点
- 需要精确的安全和合规控制
- 使用 Apache NiFi 时,您需要非常了解底层系统
- 必须维护数据的监管链
- 传输/消息传递可能不足够
- 数据访问需求超过可用传输资源
- 并非所有数据都是平等的
- SSL 和主题级授权可能不够
摘要
- Apache NiFi 是一款用于自动化和管理系统之间数据流的开源软件
- NiFi 设计为可横向扩展的集群,提供有保障的数据交付
- NiFi 在美国国家安全局(NSA)开发了超过八年
- 一旦从外部源获取数据,它在 Apache NiFi 架构中被表示为 FlowFile。
- FlowFile、处理器、控制器、Web 服务器、连接、背压、存储库是 NiFi 架构的重要组成部分
- NiFi 表达式语言支持任何运行 Java 的设备
- 您可以轻松地在 AWS 上安装 NiFi
- NiFi 被广泛应用于医疗保健、保险、电信、制造、金融、石油和天然气等不同行业
- 作为最佳实践,将您的项目组织为三个部分:摄取、测试和监控