NiFi 深入学习阶段大纲 | 学习笔记

简介: 快速学习 NiFi 深入学习阶段大纲

开发者学堂课程【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 深入学习需要了解的基本术语。

相关文章
|
应用服务中间件 nginx 微服务
SpringCloud解决feign调用token丢失问题
【5月更文挑战第2天】在feign调用中可能会遇到如下问题: * 同步调用中,token丢失,这种可以通过创建一个拦截器,将token做透传来解决 * 异步调用中,token丢失,这种就无法直接透传了,因为子线程并没有**token**,这种需要先将token从父线程传递到子线程,再进行透传
1469 3
|
12月前
|
人工智能 资源调度 监控
破解人才管理难题,人力资源驾驶舱助力企业效能升级
易知微推出的企业人力资源管理驾驶舱,整合多源数据,实现数据互通与智能分析,提升决策效率。通过3D饼图等可视化形式,覆盖员工招聘、人才盘点、绩效薪酬管理等场景,简化中小企业日常事务,提高管理效率,助力企业实现数字化转型与管理升级。点击链接体验:[企业人力资源管理驾驶舱](https://easyv.cloud/m/market/387.html?t=gzh)。
破解人才管理难题,人力资源驾驶舱助力企业效能升级
|
存储 安全 编译器
封装、继承与多态究极详解
本文详细介绍了面向对象编程中的三大核心特性:封装、继承和多态。封装通过隐藏数据和提供接口,确保对象的安全性和一致性;继承通过类之间的“is-a”关系实现代码复用和扩展;多态则允许不同类的对象通过相同的接口执行不同的操作,增强程序的灵活性和可扩展性。文章还探讨了这些特性的底层实现机制,如虚函数表和内存布局,并提供了具体的代码示例。
|
Java API 持续交付
apache nifi 如何进行二次开发?
【10月更文挑战第23天】apache nifi 如何进行二次开发?
667 2
|
机器学习/深度学习 数据采集 自然语言处理
自然语言处理中的文本分类技术深度解析
【7月更文挑战第31天】文本分类作为自然语言处理领域的重要技术之一,正不断推动着智能信息处理的发展。随着深度学习技术的不断成熟和计算资源的日益丰富,我们有理由相信,未来的文本分类技术将更加智能化、高效化、普适化,为人类社会带来更加便捷、精准的信息服务。
|
存储 安全 算法
什么是数字签名?
【8月更文挑战第24天】
1394 0
|
安全
如何在 Angular 中使用 innerHTML 属性绑定
如何在 Angular 中使用 innerHTML 属性绑定
258 0
|
监控 NoSQL Redis
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
|
Python
科学计算中的NumPy应用案例分享
【4月更文挑战第17天】本文介绍了NumPy在科学计算中的应用,包括使用NumPy的线性代数函数求解线性方程组、利用`trapz`函数进行数值积分以及结合`scipy.signal`进行信号滤波。这些案例展示了NumPy在处理实际问题时的实用性和灵活性,突显了其在Python科学计算领域的重要地位。
|
知识图谱 C++
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
2304 0