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 Architecture
NiFi 架构

以下是 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”(继续订阅)

Install Apache NiFi

第 2 步) 在下一页,

点击“Accept Terms”(接受条款)

Install Apache NiFi

第 3 步) 您将看到此页面,

感谢您订阅此产品!我们正在处理您的请求。

Install Apache NiFi

第 4 步) 5 分钟后刷新页面。

点击“Continue to Configuration”(继续配置)

Install Apache NiFi

第 5 步) 在下一页,

保持默认设置并点击“Continue to Launch”(继续启动)

Install Apache NiFi

第 6 步) 在下一页,

点击启动。您可能需要创建一个密钥

Install Apache NiFi

第 7 步) 您将看到此成功消息。

恭喜!该软件的实例已成功部署在 EC2 上!

Install Apache NiFi

第 8 步) 请注意,

EC2 实例的实例 ID 和公共 DNS

Install Apache NiFi

第 9 步) 在安全组中,

为入站和出站添加所有流量规则

Install Apache NiFi

第 10 步) 要访问 NiFi,

只需使用 URL

http://publicdns:8080/nifi

在我们的例子中,它变为

http://ec2-100-26-156-57.compute-1.amazonaws.com:8080/nifi/

用户:admin

密码:实例 ID

Install Apache NiFi

第 11 步) 您将看到,

NiFi 主屏幕

Install Apache NiFi

NiFi 用例

以下是 Apache NiFi 的用例列表

行业 用途
保险业
  • 风险与承保分析
  • 理赔分析
  • 基于使用情况的保险
  • 新产品开发
医疗保健
  • 患者单一视图
  • 实时生命体征监测
  • 电子病历 (EMR) 优化
  • 供应链优化
电信业
  • 客户单一视图
  • 通话详单 (CDR) 分析
  • 动态带宽分配
制造业
  • 预防性维护
  • 供应链优化
  • 质量控制
石油和天然气行业
  • 实时监控
  • 运营单一视图
  • 预测性维护
  • 归档与分析
  • 非结构化数据分类
金融服务
  • 反洗钱
  • 欺诈检测
  • 风险数据管理

运行 Apache NiFi 的最佳实践

  • 最好在 NiFi 中分离测试/开发/生产环境
  • 您应该将您的流程分解为进程组
  • 使用命名约定,使用注释和标签
  • 将您的项目组织为三个部分:摄取、测试和监控
  • 为变量使用唯一的名称

NiFi 的缺点

  • 需要精确的安全和合规控制
  • 使用 Apache NiFi 时,您需要非常了解底层系统
  • 必须维护数据的监管链
  • 传输/消息传递可能不足够
  • 数据访问需求超过可用传输资源
  • 并非所有数据都是平等的
  • SSL 和主题级授权可能不够

摘要

  • Apache NiFi 是一款用于自动化和管理系统之间数据流的开源软件
  • NiFi 设计为可横向扩展的集群,提供有保障的数据交付
  • NiFi 在美国国家安全局(NSA)开发了超过八年
  • 一旦从外部源获取数据,它在 Apache NiFi 架构中被表示为 FlowFile。
  • FlowFile、处理器、控制器、Web 服务器、连接、背压、存储库是 NiFi 架构的重要组成部分
  • NiFi 表达式语言支持任何运行 Java 的设备
  • 您可以轻松地在 AWS 上安装 NiFi
  • NiFi 被广泛应用于医疗保健、保险、电信、制造、金融、石油和天然气等不同行业
  • 作为最佳实践,将您的项目组织为三个部分:摄取、测试和监控