本文是Apache NiFi 专栏的开篇,用来介绍Apache NiFi 是什么,主要解决什么问题。
在学习一个新技术或新框架时,建议先查看其官方文档, Apache NiFi官方文档链接如下:官方文档,以获得对其形成一个整体的认识。
1、Apache NiFi 是什么?
-
按照官方的定义:NiFi就是为了解决不同系统间数据自动流通问题而建立的。
-
我对Apache NiFi的理解:
NiFi图形界面
对数据基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理。 -
Apache NiFi核心
名称 | 描述 | 功能图标 |
---|---|---|
FlowFile | FlowFile代表NiFi中的一个单一数据。FlowFile由两个组件组成:FlowFile属性和FlowFile内容。 内容是由FlowFile表示的数据、 属性是提供关于数据的信息或上下文的特性,它们由键值对组成。 | |
FlowFile Processor (处理器) | 实际上是处理器起主要作用。处理器就是不同系统间的数据路由,数据转换或者数据中介的组合。处理器可以访问给定FlowFile的属性及其内容。处理器可以对给定工作单元中的零或多个流文件进行操作,并提交该工作或回滚该工作。 | 处理器 |
Connection (连接线) | 连接提供组件之间的实际链接. 它们充当队列并允许各种进程以不同的速率进行交互。这些队列可以动态优先化,并且可以在加载时设置上限,从而实现回压功能。 | 连接线 |
Flow Controller (流控制器) | 流控制器负责维护流程如何连接,管理和分配流程中使用的线程。流控制器充当代理的角色,方便流文件和组件之间的进行数据的交互。 | |
Process Group (过程组) | 过程组是一组特定的组件及其连接,可以通过输入端口接收数据并通过输出端口输出数据 。 | 过程组 |
上述核心包含我们日常使用nifi的绝大多数组件。(数据的收集(souce)->数据的处理(Processing)->数据的下沉(sink))
-
Apache NiFi架构
NiFi是基于Java的,使用Maven支持包的构建管理。 NiFi基于Web方式工作,后台在服务器上进行调度。
架构图
组件含义:
-
Web浏览器:Apache NiFi 用来处理HTTP请求和API控制用的。
-
流控制器:流控制器引擎是数据操作的大脑。它为扩展程序提供运行的线程,并管理扩展程序何时接收要执行的资源的计划。
-
组件:Apache NiFi自有功能组件,这里不详细说明了。
-
扩展:用户自定义扩展了Apache NiFi组件,在JVM中运行和执行的。
-
流文件仓库:存储了flowfile的metadata,例如FileName,UUID。
-
内容仓库:存放了flowfile的内容。
-
溯源仓库:存放了flowfile的运行时状态。
2、Apache NiFi 主要解决什么问题?
- 数据流的一些高级别挑战
名称 | 描述 |
---|---|
系统故障 | 网络故障,磁盘故障,软件崩溃,人为错误 |
数据访问超出了消耗的能力 | 有时,给定的数据源可能超过处理或交付链的某些部分- 它只需要破坏一个薄弱环节就能产生问题 |
组织要求快速响应变化 | 组织的优先事项突然发生变化。必须快速地启用新流程和更改现有流程 |
数据的边界条件仅仅是摆设 | 你总是会得到太大,太小,太快,太慢,损坏,错误或格式错误的数据 |
系统以不同的速率发展 | 不同系统使用的协议和格式是多变的,而不管其他的系统如何对接。数据流需要连接的本质上是分布式的系统,这些系统间是松散的,或着根本没有设计为能在一起工作 |
合规与安全 | 法律,法规和政策的变化。业务协议的变化。系统到系统和系统到用户的交互必须是安全的,可信的,可追责的 |
生产中持续改进 | 通常无法接近复制生产环境 |
-
系统连接的困境
企业数据孤岛。 集团公司各个子公司之间的数据孤立,公司的各个系统孤立,数据的物理存储和逻辑结构孤立。 -
数据获取的困境
繁杂专用获取数据工具。 每一个系统都有专用的数据获取工具,不同的数据格式有不同的工具。
网友评论