Apache NiFi教程![]() Apache NiFi教程提供了Apache NiFi的基本和高级概念。我们的教程主要是为初学者以及想要学习Apache NiFi的基础知识和编程概念的专业人士设计的。本教程包含几个部分,其中一些部分可能对一些读者没有用处,因为一些信息是为第一次使用的用户准备的。 我们在本教程中提供的指南旨在提供如何使用NiFi的知识。要使用NiFi,您应该具备Java、数据摄取、转换和ETL的基本知识。您还应该熟悉正则表达式模式、web服务器和平台配置。 在本教程中,我们将讨论以下主题:
什么是Apache NiFi?Apache NiFi是一个开源的数据摄取平台。它是一个强大而可靠的系统,用于在不同系统之间处理和分发数据。Apache NiFi有助于管理和自动化系统之间的数据流。NiFi最初代表尼亚加拉档案(NiFi)这是由国家安全局但现在由Apache基金会进一步更新。它提供了基于web的用户界面(UI),它使用HTTPS协议在web浏览器上运行NiFi,使用户与NiFi的交互安全。 请注意,Apache NiFi的最新版本是2020年3月发布的1.11.4。它是一个基于web的UI平台,我们需要在其中分别为数据收集、数据传输和数据存储定义源、处理器和目标。NiFi中的每个处理器都有一些关系(如成功、失败、重试或无效数据等),这些关系在连接一个处理器到另一个处理器时使用。 为什么使用Apache NiFi?Apache NiFi有助于管理和自动化系统之间的数据流。它可以轻松地管理源系统和目标系统之间的数据传输。它可以被描述为数据物流。Apache NiFi帮助移动和跟踪数据,这与包裹服务类似。它提供了基于web的用户界面(UI)来实时管理数据。 正如我们已经讨论过的,Apache NiFi是开源的,因此它是免费的。支持多种数据格式(如日志、社交feed、地理位置数据等)和协议(如KAFKA、SFTP、HDFS等)。支持各种各样的协议使这个平台更受欢迎它行业。 以下是使用Apache NiFi的一些原因:
NiFi的历史NiFi原名尼亚加拉文件它现在被称为Apache NiFi。它是由美国国家安全局(NSA)开发的,现在移交给Apache软件基金会。 ![]() Apache NiFi历史上的变化如下:-
Apache NiFi的特性Apache NiFi支持数据路由、系统中介和转换的有向图。NiFi之所以出现是因为我们面临的数据挑战。NiFi有一个数据挑战列表,这些都是NiFi的特性。因此,NiFi的各种特性如下所述: ![]() 1.〇基于web的用户界面 NiFi提供基于web的用户界面(UI)可以运行在HTTPS上,这使得用户与NiFi的交互安全。它还可以实时管理数据。NiFi提供设计、控制、监控和反馈方面的经验。 2.〇保证交付 它是Apache NiFi最重要和最强大的特性之一,可以保证完成数据的交付。这可以通过有效使用持久的预写日志和内容存储库来实现。它们都以这样一种方式一起设计,允许高事务率、写时复制和有效的负载分散。NiFi是高度可配置的。 3.数据来源或数据沿袭- NiFi提供了一个数据来源模块,用于从头到尾跟踪和监视数据流。当对象流经系统时,NiFi自动记录、索引并提供来源数据。对于支持遵从性、优化、故障排除和许多其他场景,这些信息非常有用。 4.可扩展, 这个特性允许您创建自己的处理器。它支持快速开发和有效测试。NiFi支持安全协议,如SSH、SSL、HTTPS、加密内容,还提供多租户授权以及内部策略管理。在NiFi中,不同连接器的数量正在增加。
5.视觉命令和控制- 数据流可能相当复杂。NiFi为用户提供了一个交互式用户界面,能够可视化和表示数据流。它允许可视化地形成数据流,并有助于可视化地表达数据流,从而降低数据流的复杂性。NiFi不仅可以可视化地形成数据流,而且可以实时地执行。如果您对数据流进行了任何更改或修改,该更改将立即反映出来。您不需要停止整个流程来进行任何特定的修改。 6.安全- Apache NiFi提供了系统到系统、用户到系统和多租户授权安全特性。出于安全考虑,NiFi使用SSL、SSH和HTTPS等安全协议。它还使用其他加密技术来保证数据安全。 Apache NiFi的优势
Apache NiFi的缺点
Apache NiFi架构Apache NiFi有一个处理器、流控制器和在JVM机器上执行的web服务器。此外,它还包括三个仓库,如图所示,分别为FlowFile库、Content库和Provenance库。NiFi在主机操作系统上的JVM (Java虚拟机)中运行,每个数据或元数据存储在存储库中。NiFi组织良好的架构如下: ![]() 下面将详细讨论Apache NiFi架构的关键组件: Web服务器Web服务器托管基于http的命令和控件APINiFi。 流量控制器流控制器提供了执行扩展的线程。它还在接收到要执行的资源时调度扩展。它就像运作的大脑。 扩展扩展是各种类型的插件,允许Apache NiFi与不同的系统进行交互。扩展帮助流程完成任务。NiFi有几种类型的扩展。对象中执行和操作这些扩展Java虚拟机(JVM)。 FlowFile库FlowFile存储库包含流经NiFi数据流的每个FlowFile的当前状态和属性。NiFi跟踪FlowFile存储库中的状态,该存储库当前在流中处于活动状态。根目录是这个存储库的默认位置,它可以被更改。此存储库的默认位置可通过更改属性“nifi.flowfile.repository.directory". 内容存储库内容存储库存储所有流文件中的所有数据。内容存储库的实现与FlowFile存储库一样是可插入的。它的默认方法是在文件系统中存储数据块的简单机制。 内容存储库的默认目录位于NiFi的根目录中,可以通过更改“org.apache.nifi.controller.repository.FileSystemRepository”属性。 来源库起源存储库是存储所有起源事件数据的存储库。事件数据在每个位置都被索引和搜索。它允许用户检查有关FlowFile的信息,这意味着它跟踪并存储Apache NiFi中所有流文件的所有事件。如果在处理FlowFile时发生任何问题,也可以进行故障排除 来源存储库分为两种类型:
Apache NiFi也可以在集群中工作。 ![]() 在NiFi 1.0的第一个版本中使用了零主集群模式。在NiFi集群中,每个节点处理不同的数据集,但对数据执行相同的任务。Apache Zookeeper选择单个节点作为集群协调器,并自动处理故障。集群的每个节点向集群协调器报告心跳和状态。集群协调器负责连接或断开节点。 此外,每个集群也有一个主节点,这也是由Zookeeper选择的。您可以作为数据流管理器或终端开发人员使用任何节点的用户界面(UI)与NiFi集群交互。用户所做的任何更改都将复制到集群的所有节点,这将允许多个入口点。 Apache NiFi的关键概念在讨论NiFi体系结构时,用户必须熟悉Apache NiFi的以下关键术语。因此,我们将在较高的水平上讨论基本的关键概念。它们与基于流编程(Flow-Based Programming, FBP)的思想有关。 流流是通过连接两个或多个不同的处理器来创建的。它用于将数据从一个数据源传输到另一个目标数据源。如果需要,可以修改此数据。 处理器处理器是一个java模块,用于从源系统获取数据或存储在目标系统中。还有许多其他可用的处理器可用于添加属性或更改FlowFile中的内容。处理器负责发送、接收、创建、拆分、合并、转换、路由和处理流文件。 连接在FBP术语中,连接被称为有界缓冲区。它是连接处理器的处理器之间的链路。它充当队列,在需要时将数据保存在队列中。它允许几个进程以不同的速率相互作用。 过程组进程组是一组NiFi流。它帮助用户管理流,并以分层的方式保存它们。基本上,它是一组进程及其连接,可以通过输入端口接收数据,通过输出端口发送数据。 FlowFileFlowFile是元信息关联的原始数据。它表示在系统中移动的每个对象。当对象从源处理器移动到目标处理器时,NiFi处理器更改为FlowFile。基本上,一个FlowFile是由内容和属性部分创建的。内容是用户数据,属性是附加用户数据的键-值对。 数据来源它是一个存储库,允许用户检查关于FlowFile的信息。如果在处理FlowFile时发生任何问题,也可以进行故障排除。 Apache NiFi必备条件在使用Apache NiFi之前,必须在您的系统上做以下事情:
除了这些要求外,您还应该具备以下的基本知识Java、数据摄取、转换和ETL使用Apache NiFi。 用户还应该熟悉正则表达式模式、web服务器和平台配置。 注意,NiFi与Java版本8或11更兼容。因此,我们建议您下载所需的Java版本。安装Java并设置环境变量
现在,下一步是设置Java环境变量-
![]()
现在,验证Java已经安装,环境变量已经成功设置。
![]() 现在您可以下载并在您的系统上安装Apache NiFi。 在Windows上安装Apache NiFi在本教程中,我们将安装Apache NiFi的设置Windows操作系统.要逐步安装Apache NiFi,请遵循以下步骤: 步骤1:点击下面的链接http://nifi.apache.org/download.html下载最新版本的Apache NiFi。
步骤2:在“Binaries”部分,单击windows操作系统的NiFi安装压缩文件,如下面的截图所示。 ![]() 步骤3:上面的链接会重定向到一个新页面。在这里,点击如下截图所示的第一个链接。我们正在下载NiFi的最新版本,即1.11.4。 ![]() 步骤4:下载完成后,提取下载的Apache NiFi的zip设置。提取邮政编码文件,右键单击下载的文件并选择这里提取. ![]() 步骤5:zip文件将开始提取。 ![]() 注意:请记住必须在您的系统上安装Java,并且必须设置环境变量。因此,首先要确保安装了Java。如果没有,请安装它并设置Java环境变量。步骤6:现在,转到解压缩文件夹中的bin文件夹,即,nifi-1.11.4 / bin.点击run-nifi窗口批处理文件,运行它启动NiFi。 ![]() 第七步:的run-nifi.bat将运行命令提示符,如下面的截图所示。 在web浏览器上运行NiFi之前必须执行此bat文件。 ![]() NiFi已经启动。现在你可以从任何地方打开它web浏览器就像铬,或Internet Explorer等。因此,我们需要一个端口号来在web浏览器上运行NiFi UI。 第八步:因此,去相依文件夹(nifi-1.11.4 / conf),其中包含NiFi的所有配置文件,并打开nifi.properties文件在记事本。向下滚动并查看端口号nifi。 ![]() Apache NiFi默认端口为8080.如果默认端口号已经分配给其他软件,请修改端口号(如9090)后保存文件。 ![]() 步骤9:现在,打开网络浏览器,输入http://localhost:8080在浏览器选项卡中。在这里,我们使用默认端口8080来运行NiFi,因为端口8080在我们的系统上是空闲的。 第十步:成功安装后,NiFi的仪表盘将在浏览器上启动。调用Apache NiFi的仪表板屏幕帆布,我们将组件放置在其中以创建数据流。 ![]() 在web浏览器上运行Apache NiFi时出现的问题按照上述安装步骤,NiFi将在web浏览器上成功运行。如果没有,那么可以这样做,因为以下原因:
已解决上述问题,请重新尝试运行NiFi。 修改端口号如果NiFi给出错误"无法联系到该网站在网页浏览器上,可能是端口不免费。所以,按照下面的步骤来更改端口号: 步骤1:去相依解压后的zip文件夹中的文件夹,即nifi-1.11.4 / bin.它包含NiFi的所有配置文件。 ![]() 步骤2:打开nifi.properties使用记事本或任何其他文本编辑器工具文件,并更改端口号并保存文件。 nifi.web.http.port = 9090 ![]() 重试一次,使用新的端口号在web浏览器上运行Apache NiFi。 Apache NiFi的用户界面成功启动NiFi后,UI将显示给您以创建和监视数据流。NiFi UI提供了一个用户可以在web浏览器上访问的交互式界面。用户可以在NiFi中拖放组件。它提供了关于NiFi的各种类型的信息,例如:
下图为Apache NiFi的用户界面截图: ![]() Apache NiFi组件Apache NiFi有以下组件,在工具栏的组件部分列出- ![]() 处理器处理器是用于创建数据流的基本块。Apache NiFi有几个处理器,每个处理器都有不同的功能。用户可以在画布上拖放处理器图标来添加处理器,然后选择所需的处理器来创建数据流。 ![]() 拖动画布上的流程图标,它将打开添加处理器窗口。为Apache NiFi中的数据流选择所需的处理器。 ![]() 要了解有关处理器的更多信息,请右键单击它并转到使用.这将调出处理器的文档。它提供了处理器的功能、需要配置的属性以及处理器的关系等信息。 输入端口输入端口用于从处理器获取数据,该数据不存在于进程组中。输入端口可以通过单击下面给出的图标拖动到画布上。 若要向任何数据流添加输入端口,请在画布上拖动图标。 ![]() 将图标拖到画布上后,NiFi要求您输入输入端口的名称。提供输入端口的名称并单击Add按钮。 ![]() 输出端口输出端口用于向处理器传输数据,处理器不存在于该进程组中。输出端口可以通过单击下面给出的图标拖动到画布上。 若要将输出端口添加到任何数据流,请在画布上拖动图标。 ![]() 将这个图标拖到画布上后,NiFi弹出一个屏幕,输入输出端口的名称。提供输出端口的名称并单击Add按钮。 ![]() 过程组下面的图标用于在NiFi画布中添加进程组。 ![]() 将此图标拖到画布后,NiFi将弹出一个屏幕,在其中输入进程组的名称,然后通过单击add按钮将其添加到NiFi画布。 ![]() 远程进程组下面的图标用于在NiFi画布中添加进程组。 ![]() 模板模板用于在相同或不同的NiFi实例中重用数据流。下面给出的图标用于将模板添加到NiFi画布上。 ![]() 拖拽模板图标后,用户可以选择NiFi中已经添加的模板。 漏斗漏斗有助于将一个处理器的输出传输到其他几个处理器。借助下面的图标,用户可以将漏斗添加到数据流中。 ![]() 标签标签用于添加关于NiFi中存在的任何组件的文本。它还提供了各种颜色的选择。开发人员可以改变标签的颜色以及文本的大小。他们可以用这些颜色来增加美感。 ![]() 在NiFi UI的顶部菜单中,最左边的第一个图标用于在NiFi画布中添加标签。 如何构建流?在本例中,我们将构建一个简单的双处理器流。首先,我们将在canvas窗口中添加两个处理器,并分别配置它们。配置完这两个处理器后,我们将连接并运行它们。 添加和配置处理器步骤1:要在画布上添加处理器,请转到工具栏中的组件部分并拖动处理器组件。这将打开一个Add Processor窗口,您可以在其中浏览处理器列表。 步骤2:找到所需的处理器或单击标签云下的标签,以按类别和功能减少您正在寻找处理器的处理器列表。 ![]() 步骤3:控件上单击要选择的处理器,并将其添加到画布中添加按钮。类似地,再次拖动处理器图标,键入所需处理器的名称,然后双击将其添加到画布。 ![]() 步骤4:如果您已经知道您想要的处理器名称,您可以简单地在过滤器栏中键入处理器名称。之后,双击处理器将其添加到画布中。 通过使用上面的步骤,在画布上添加两个处理器。 ![]() 步骤5:但是您将看到这两个处理器都是无效的,因为它们在处理器底座的左上角有一个警告符号。 将鼠标悬停在警告图标上,它将显示为使处理器有效并能够运行而需要配置的最低要求。 ![]() 注意:要了解更多关于处理器的信息,请右键单击它并转到Usage选项。它将向您显示处理器的文档。步骤6:要配置处理器,只需右键单击相应的处理器并转到配置。 ![]() 将弹出一个带有默认值的Configure Processor窗口。这将打开一个包含四个选项卡的新窗口,即:设置,调度,属性,评论. ![]() 配置GenerateFlowFile Processor设置 转到Setting选项卡,在name字段中更改处理器的名称,因为默认情况下它的名称是处理器类型。每个处理器都有一个唯一的id号,这是不可配置的。 ![]() 这个处理器只有成功关系。因此,将自动终止关系保留为未选中状态,因为我们希望继续到流中的下一个处理器。 调度 调度选项卡定义如何运行、运行频率以及运行多长时间。 将Run Schedule设置为1秒,因为这个处理器可以非常快地生成测试文件。现在将所有其他字段保留为默认值。 ![]() 属性 Properties选项卡是配置处理器正常运行所需信息的主选项卡,其中没有加粗字母的属性是可选的。 双击文件大小行更改文件的大小。 ![]() 这里将文件大小从0B更改为1KB,然后单击好吧按钮。 ![]() 评论 在comment选项卡中,键入任何注释,例如为什么配置处理器或您配置处理器的方式。 第七步:现在,点击应用按钮保存所做的所有更改,并完成GenerateFlowFile处理器的配置。 ![]() 配置LogAttribute处理器与GenerateFlowFile处理器类似,右键单击它并转到配置、我们会改变一些在FlowFile处理器中没有做的事情。在这里,您还将获得一个包含四个选项卡的新窗口,即设置、调度、属性和评论。 第八步:去设置选项卡,更改Buttetin水平下拉列表信息代替警告. ![]() 步骤9:标志着成功窗口右侧“自动终止关系”下的复选框。 ![]() 第十步:保留所有选项卡的其他部分的默认设置,并单击应用按钮,完成配置GenerateFlowFile处理器。 完成上述步骤后,您可以看到两个处理器仍然无效。这是因为我们还没有把它们连接起来。因此,我们现在将连接两个处理器并运行。 连接和运行处理器步骤1:要连接处理器,将鼠标悬停在处理器的中心,将显示一个圆形的空气。将鼠标从那个圆圈拖到另一个处理器上,直到它以绿色高亮显示。 ![]() 步骤2:在这里释放鼠标。将打开一个创建连接窗口,其中包含详细信息和设置选项卡。将当前设置保留为默认值,然后单击添加按钮。 ![]() Details选项卡显示连接的起点和目的地。它还显示了将包含在连接中的关系列表。 步骤3:现在,您可以看到两个处理器现在都是有效的,因为它们在左上角用停止符号代替了警告符号。 ![]() 步骤4:要运行两个处理器,请按下转变键并单击开始按钮出现在操作部分下。 ![]() 步骤5:在这里,连接成功后,处理器现在已经开始运行。您可以看到任何处理器还没有发送或接收任何信息。 ![]() 步骤6:单击画布上的任意位置并选择刷新看看处理器是如何处理这些信息的。 ![]() 第七步:您可以看到Log Attribute正在生成公告。我已经将它配置为在信息级别生成公告。该信息表示处理器在过去五分钟内发生的事情。 ![]() 第八步:在这里,您可以看到274KB数据来自GenerateFlowFile处理器,273KB由LogAttribute处理器接收,其中1KB数据处于队列中。GenerateFlowFile处理器正在发送信息,该信息由LogAttribute处理器接收。 ![]() 让我们比较这两个处理器,注意没有数据进入GenerateFlowFile处理器,因为它没有任何传入连接。所以,它自己生成数据。 步骤9:现在,让我们通过选择处理器并单击stop来停止LogAttribute处理器几秒钟。如果我们刷新状态,您将看到数据已经在提供数据的连接中排队,正如我们前面所做的那样。 ![]() 第十步:现在右键单击Log Attribute处理器并选择开始重新启动处理器,以便清除队列数据。 ![]() 现在,它将准确地运行。 |