没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
一、什么是 NiFi
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统,在大数据生
态中的定位是成为一个统一的,与数据源无关的大数据集成平台。Apache NiFi 是为数据流
设计,它支持高度可配置的指示图,来指示数据路由、转换和系统中流转关系,支持从多种
数据源动态拉取数据。简单地说,NiFi 是为自动化系统之间的数据流而生。这里的数据流表
示系统之间的自动化和受管理的信息流。 基于 WEB 图形界面,通过拖拽、连接、配置完成
基于流程的编程,实现数据采集、处理等功能。未来 NiFi 有可能替换 Flume、Sqoop 等大
数据导数据的工具。
1、NiFi 背景介绍
2006 年 NiFi 由美国国家安全局(NSA)的 Joe Witt 创建。2015 年 7 月 20 日,Apache
基金会宣布 Apache NiFill 利孵化成为 Apache 的顶级项目之一。NiFi 初始的项目名称是
Niagarafiles,当 NiFi 项目开源之后,一些早先在 NSA 的开发者们创立了初创公司 Onyara,
Onyara 随之继续 NiFi 项目的开发并提供相关的支持。Hortonworks 公司收购了 Onyara 并将
其开发者整合到自己的团队中,形成 HDF (Hortonworks Data Flow)平台。2018 年 Cloudera 与
Hortonworks 合并后,新的 CDH 整合 HDF,改名为 Cloudera Data Flow(CDF)。 Cloudera 将 NiFi
作为其新产品 Cloudera Flow Management 和 Cloudera Edge Management 的核心组件推出,
可以方便地使用 Cloudera Manager 进行 Parcel 安装和集成,而 Apache NiFi 就是 CFM 的核
心组件。
2、传统数据流解决方案遇到的问题
传统数据流接收处理过程中存在如下问题:
(1)系统错误
包括网络错误、磁盘错误、软件崩溃,甚至是人为操作错误,造成了数据流处理不稳定。
(2)数据访问超过处理能力
当数据处理某一模块出现瓶颈问题时,不能及时处理到达的数据
(3)异常数据处理
不可避免出现数据太大,数据传输太慢,数据损坏、问题数据、数据碎片及数据格式错误
问题。
(3)业务快速演进
现实业务或需求变更快,设计新的数据处理流程或者修改已有的流程必须要迅速。
(4)多系统升级不同步引入的前后兼容
原有系统的协议和数据格式,会伴随系统的升级有一定的调整,同时单个系统的升级会
影响周边系统。数据流可以把多个大型分布式系统串边在一起,这些系统可以是松散地,甚
至设计之初就没考虑未来集成。
(5)持续改进生产系统
通常不可能在测试环境中完全模拟生产环境。一旦测试通过的流处理流程有可能针对生
产环境继续修改,耗时费力。
多年来,数据流(dataflow)一直是架构中的痛点之一。而现在有越来越多事物的兴起让
企业开始重视数据流,包括:面向服务的体系结构(SOA), API,物联网 IOT 和大数据。此外,合
规性,隐私性和安全性所需的严格程度也在不断提高。对于这些新鲜事物或概念,数据流的
需求大致相同,主要区别在于复杂性,适应业务变化的速度,以及大规模边缘用例。NiFi
旨在帮助解决这些现代数据流挑战。
3、NiFi 特点
Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系
统,用于自动化管理系统间的数据流。
支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源
动态拉取数据。
NiFi 基于 Web 方式工作,后台在服务器上进行调度,是 Apache 基金会的顶级项
目之一。
用户可以为数据处理定义为一个流程,然后进行处理,后台具有数据处理引擎、任务
调度等组件。
4、知识思维导图
二、NiFi 架构
1、NiFi 核心概念
NiFi 的基本设计理念是基于数据流的编程 Flow-Based Programming(FBP),应用是由处
理器、连接器组成的网络。数据进入一个节点,由该节点对数据进行处理,根据不同的处理
结果将数据路由到后续的其他节点进行处理。这是 NiFi 的流程比较容易可视化的一个原因。
以下是 NiFi 的一些概念:
NiFi 术语
描述
FlowFile
FlowFile 是系统间传输的对象,FlowFile 有 attribute 和 content,
attribute 属性是与数据关联的 key-value 键值对,content 内容是数
据本身相关的字节流。
FlowFile Processor
Processor 是实际操作数据的模块。Processor 负责创建、接收、发
送、转换、路由、拆分、合并、处理 FlowFile。
Processor 可以访问零到多个 FlowFile 的属性和内容,可以提交或回
退提交的任务。
Connection
Connection 用来连接 Processor,每个 Connection 充当一个队列从
而实现不同的 Processor 可以以不同的速率交互数据。这个队列可
以动态调节优先级,也可以设置负载上限,实现反压机制。
Connection 通常和 Processor 的一个或者多个 Relationship 连接,
这就允许根据处理器的不同数据处理结果来路由数据。当一个
FlowFile 被 发 送 到 某 个 Relationship 时 , 它 就 被 加 到 了 对 应的
COnnect 队列里。
Flow Controllers
负责维护 Processors 之间的调度、管理所有流程使用的线程及其分
配。
Process Group
处理器组,一堆 Processors 及其对应的 Connection 组成了一个
Process Group,这个处理器组通过输入端口接收数据,通过输出端口
发送数据。
Process Group 可以组合其他的组件来创建新的组合。
参照上述表格,简单来讲 FlowFile 是在各个节点间流动的数据;FlowFile Processor 是数
据的处理模块;Connection 是各个处理模块间的一个队列; Flow Controllers 是复杂流程的调
度; Process Group 一些相关连的 Processor 可以封装到一个 Process Group 中,不同组用来
表示不同流程的层次关系。
这种设计模式带来了很多好处,帮助 NiFi 成为构建强大的可扩展数据流高效的平台,
包括:
适用于可视化的创建和管理 Processor。
本质上是异步的,即使在处理和流量波动时也允许非常高的吞吐和自然缓冲。
提供高并发的模型,让开发人员不用担心如何实现复杂的并发。
帮助高度聚合和松散耦合组件的开发,让这些组件可以在其他环境复用,并帮助单元
测试。
资源受限的 connection 使得背压和压力释放等关键功能非常自然和直观。
错误处理做的非常好,而不是粗粒度的一把抓。
数据进入和退出系统以及如何流过的点很容易理解和轻松跟踪。
2、NiFi 架构
NiFi 是基于 Java 开发的,所以运行在 JVM 之上。NiFi 的核心部件在 JVM 中的位置如上图:
Web Server (Web 服务器)
Web 服务器的目的是承载 NiFi 基于 http 的命令和控制 API。
Flow Controller(流控制器)
Flow Controller 是 NiFi 执行具体操作的大脑,负责从线程资源池中给 Processor 分配可执行的
线程,以及其他资源管理调度的工作。
Extensions(扩展)
NiFi 中有各种 Processor 及扩展。这些扩展也是运行在 JVM 中的。
FlowFile Repository(FlowFile 存储库)
FlowFile Repository 负责保存在目前活动流中 FlowFile 的状态。FlowFile Repository 的实现是
可插拔的(多种选择,可配置,甚至可以自己实现),默认实现是使用 Write-Ahead Log 技
术写到指定磁盘目录。
Content Repository(内容存储库)
Content Repository 负责保存在目前活动流中 FlowFile 的实际字节内容。其功能实现是可插
拔的。默认的方式是一种相当简单的机制,即存储内容数据在文件系统中。多个存储路径可
以被指定,因此可以将不同的物理路径进行结合,从而避免达到单个物理分区的存储上限。
Provenance Repository(源头数据库)
源存储库是存储所有源事件数据的地方,同样此功能是可插拔的,并且默认可以在一个或多
剩余89页未读,继续阅读
资源评论
ben@dw
- 粉丝: 20
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功