开发者学堂课程【NiFi 知识精讲与项目实战(第二阶段): NiFi 深入学习阶段大纲】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/706/detail/12525
NiFi 深入学习阶段大纲
内容介绍:
一、NiFi 课程介绍
二、NiFi 基本束语
一、NiFi 课程介绍
NiFi 的深入学习阶段会分以下部分进行讲解,首先是 NiFi 集群的部署和使用,然后是 FlowFile 的生成器案例,还有 NiFi 模板的案例,以及 FlowFile 的深入学习和实践,NiFi 表达式语言的实践,NiFi 监控功能的深入学习和实践,NiFi 连接与关系的深入学习和实践。
二、NiFi 基本束语
进行深入学习之前,首先要掌握一些常用的束语。
- DataFlow Manager
DataFlow Manager(简称 DFM)指 NiFi 用户具有添加、删除和修改 NiFi 数据流组件的权限。
- FlowFile
FlowFile代表 NiFi 中的单个数据。FlowFile 由两个组件组成,分别是 FlowFile 属性(attribute)和 FlowFile 内容(content)。内容是 FlowFile 表示的数据,属性是提供有关数据的信息或上下文的特征,它们由键值对组成。所有FlowFiles 都具有以下标准属性:
uuid:一个通用唯一标识符,用于区分 FlowFile 与系统中的其他 FlowFiles
filename:在将数据存储到磁盘或外部服务时可以使用的可读文件名
path:在将数据存储到磁盘或外部服务时可以使用的分层结构值,以便数据不存储在单个目录中。
- Processor
Processor为处理器,也是 NiFi 的核心组件,用于监听传入数据、从外部来源提取数据、将数据发布到外部来源、路由,转换或提取 FlowFiles
- Relationship
Relationship是 NiFI 里为每一个处理器定义的关联关系,定义这些关系的主要目的是用来处理 FlowFile 的结果、指向,处理器处理完 FlowFile 文件后,会将 FlowFile 的结果路由(传输)到其中一个关系。DFM (用户)能够将每一个关系连接到其他组件,以指定 FlowFile 应该在哪里进行下一步处理。
- Connection
DFM(用户)通过将组件从 NiFi 工具栏的 Components 部分拖动到画布, Components 指的就是状态栏,然后通过 Connections 将组件连接在一起来创建自动的数据处理流程。每个连接由一个或多个关系组成,DFM(用户)可以为每一个 Connection 确定使用哪些关系。这样我们可以基于其处理结果的不同来以不同的方式路由数据。每个连接都包含一个 FlowFile 队列。将 FlowFile 传输到特定关系时,会将其添加到属于当前 Connection 的队列中。
此处有一个疑问点,relationship 和 Connection 的区别是什么?它们都是用来连接处理器的,而它们两个是使用和被使用的关系,每一个连接可以被一个或多个 relationship 所使用,比如成功和失败这两个关系都可以 connection 到同一个处理器,一个是连接,一个是关系。每一个连接,每一个 connection 都会包含一个队列queue,FlowFile 进行传输的时候都会先传输到该队列中,然后再进行逐个的销毁。
- Controller Service
控制器服务是扩展点,在用户界面中由 DFM 添加和配置后,将在 NiFi 启动时启动,并提供给其他组件(如处理器或其他控制器服务)需要的信息。控制器服务主要是服务端在NiFi启动的时候默认自动启动,比如说数据库具有客户端和服务端,数据库服务端就是数据库的控制服务,NiFi 当中会有自己的控制服务,比如说缓存服务。常见 Controller Service 比如 StandardSSLContextService,它提供了一次配置密钥库和/或信任库属性的能力,并在整个应用程序中重用该配置。控制器服务不是在每个可能需要它的处理器中配置这些信息,而是根据需要为任何处理器提供。
- Funnel
漏斗是一个 NiFi 组件,用于将来自多个 Connections 队列中的数据合并到一个同 Connection 中,此时可以进行统一的销毁处理。
- Process Group(处理器组)
当数据流变得复杂时,在更高、更抽象的层面上推断数据流是很有用的。NiFi 允许将多个组件(如处理器)组合到一个过程组中。然后,DFM(用户)可以在 NiFi 用户界面轻松地将多个流程组连接到逻辑数据处理流程中,DFM 还可以进入流程组查看和操作流程组中的组件,形成了一个比较好的这种结构,便于更好地阅读和理解。
NiFi 允许把多个处理器组件组合到同一个处理器当中,用户可以在界面上轻松地把不同的组再进行连接。
- Port(端口号)
使用一个或多个进程组构建的数据流需要一种方法将进程组连接到其他数据流组件,就是通过使用 Port 实现的,完成组和组的关联。DFM 可以向进程组添加任意数量的输入端口和输出端口,并相应地命名这些端口。
port是端口号,可能会使用多个处理器度去构建数据流,那么,不同的这个处理器组件之间就可以通过我们的 port 机来实现连接,这个机制它主要是用于组和组之间的一个关联,在不同的组之间进行交流,就需要通过 port 来实现。
- Remote Process Group(远程处理器)
其用法基本与处理器组相似,调用的是远程 Ul 地址。正如数据传输进出进程组一样,有时需要将数据从一个 NiFi 实例传输到另一个 NIFI 实例。虽然 NiFi 提供了许多不同的机制来将数据从一个系统传输到另一个系统,但是如果将数据传输到另一个 NiFi 实例,远程进程组通常是实现此目的的最简单方法。
Remote Process Group 是远程处理系统组,它的用法基本上和处理器组织相似的,只不过它调用的是远程 url 地址,是其他的集群。
- Bulletin(公告栏)
NiFi 用户界面提供了大量有关应用程序当前状态的监视和反馈。除了滚动统计信息和为每个组件提供岛当前状态之外,组件还能够报告公告,主要用来展示错误信息。每当组件报告公告时,该组件上都会显示公告图标(处理器右上角红色的图标)。系统级公告显示在页面]顶部附近的状态栏上。使用鼠标悬停在该图标上将提供一个工具提示,显示公告的时间和严重性(Debug, Info, Warning, Error)以及公告的消息。也可以在全局菜单中的公告板页面中查看和过滤所有组件的公告。
公告栏,NiFi 用户界面提供有大量的应用程序来监控当前的状态,除了一些统计信息之外,还有一个公告的功能,主要会用来展示一些错误的信息,可以通过把鼠标放在错误这个公告上面,来查看他的详细信息。
- Template(模板)
通常,DataFlow由许多可以重用的组件组成。将一些复杂的处理器流程通过模板功能备份以后进行方便地迁移,对于实际场景十分实用。NiFi 允许 DFM 选择 DataFlow 的一部分(或整个 DataFld (并创建模板。此模板具有名称然后可以像其他组件一样拖动到画布上。最终,可以将若干组件组合在一起以形成更大的构建块;然后从该构建块创建数据流处理流程。这些模板也可以导出为 XML 并导入到另一个 NiFi 实例中,从而可以共享这些构建块。
Template 模板,是有很多可以复用的这些处理器组成的,把一些复杂的处理流程通过模版功能备份以后就可以方便地进行迁移,对于实际的工作场景是非常有用的。
- flow.xml.gz
DFM 放入 NiFi 用户界面画布的所有内容都实时写入一个名为 flow.xml.gz 的文件。该文件默认位于 flow.xml.gz:的文件。该文件默认位于 conf 目录中,在画布上进行的任何更改都会自动保存到此文件中,而无需用户单击保存按钮。此外,NiFi 在更新时会自动在归档目录中创建此文件的备份副本,以免丢失。可以使用这些归档文件来回滚配置,如果想要回滚先停止 NiFi,将 flow.xml.gz 替换为所需的备份副本,然后重新启动 Nii。在集群环境中,停止整个 NiFi 集群,替换其中一个节点的 flow.xml.gz,删除自其他节点的 flow.xml.gz,然后重新启动该节点。确认此节点启动为单节点集群后,然后启动具节点。替换的流配置将在集群中同步。flow.xml.gz 的名称和位置以及自动存档行为是可配置的。
最后是 flow.xml.gz 文件,用户放到 NiFi 画布里面的所有的组件都会实时地写入了文件中,flow.xml.gz 文件,它默认是放在 conf 中,进行的任何改动都会自动保存到这个文件当中,不需要去点击保存按钮,只要去操作就可以。
另外 NiFi 在更新的时候会自动的归档文件中创建副本以免丢失,可以使用这个文件进行回滚的操作。
以上是 NiFi 深入学习需要了解的基本术语。