NIFI概述[通俗易懂]

NIFI概述[通俗易懂]文章目录NIFI概述NIFI基础NIFI简介NIFI特点优点缺点Nifi的一些核心概念NIFI面板NIFI概述参考:https://blog.csdn.net/cc_xss/article/details/76195254https://www.cnblogs.com/neillee/p/7004006.htmlhttps://blog.csdn.net/qq_24505127/a...

NIFI概述

参考:

  • https://blog.csdn.net/cc_xss/article/details/76195254
  • https://www.cnblogs.com/neillee/p/7004006.html
  • https://blog.csdn.net/qq_24505127/article/details/85541956
  • https://my.oschina.net/thinker4self/blog/2966882
  • https://blog.csdn.net/qq_40990854/article/details/82430824
  • https://blog.csdn.net/cc_xss/article/details/78245546
  • https://blog.csdn.net/zhanglong_4444/article/details/88652464

NIFI基础

NIFI简介

  • Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。

  • Nifi 是一个开源的数据处理工具,可以通过简单的Processor对数据流进行处理。1.8版本内置了286个Processor,可以处理大部分的应用场景。

  • nifi的主要用途是对数据进行处理,可汇总、分流、过滤、筛选、组合…等等。

  • nifi内部功能强大,它的一个优点就是大大减少了编程量!它有很多内置的处理模块,只需用户修改条件或变量便可实现其功能,此外还有一些模块可执行程序代码来进行更灵活的自定义的操作。

  • nifi中最常用到的就是正则表达式,偶尔会用到一些代码(java),其次就是数据源的格式(xml、csv、txt、pdf等) ,所以nifi对有一定编程基础的人来说还是很好上手的,只需要多看看文档上对各个模块的释义以及一些函数规则,了解各个模块的功能即可顺畅使用。 nifi对于没有编程基础的人的门槛设置也不是很高,逻辑思维需要通过多个case来练习,训练对nifi的熟悉度,体会其中的逻辑。此外还要学习正则表达式的语法。

NIFI特点

  • 基于web的用户界面
    无缝体验设计、控制和监视
  • 高度可配置的
    数据丢失容错和保证交付
    低延迟和高吞吐量
    动态优先级
    流可以在运行时修改
    背压 Back presure
  • 数据来源
    从始至终跟踪数据流
  • 为扩展设计
    构建自己数据处理器
    支持快速开发和有效的测试
  • 安全
    SSL,SSH,HTTPS加密内容,等等……
    可插拔的基于角色的验证/授权

优点

  • 可视化的UI界面,各个模块组件之间高度可配置,且每个流程都有监控,可以通过界面直观的看到各个数据处理模块之间的数据流转情况,分析出程序性能瓶颈。

  • 数据流可以在UI界面自由拖拽和拓展,各模块之间相互独立,互不影响。

  • 可以在处理耗时的地方创建多个处理模块并行执行,提升处理速度。类似于代码中加入了多线程,但相对于修改代码,界面配置操作十分简单。

  • 修改方便,任意模块都可以在数据流转过程中随时启停,任意处理模块都可以实现热插拔。数据流流向随时可变。

  • Nifi的对处理模块有对应的retry机制和错误分发机制,且可配置性强。

缺点

各个步骤中间结果落地导致磁盘IO成为Nifi的瓶颈,这个缺点在数据冗余量越大的时候表现的越明显。

Nifi 的一些核心概念

  • FlowFile:信息流,每一个数据流在系统里面流动,并包含着key/value形式的attribute,以及不同大小的content;

  • FlowFile Processor:数据流处理器是nifi中真正处理工作的,譬如,整合,转换,调节系统中的流转的数据流,数据流处理器可以接收上游的flow的attribute,以及content。数据流处理器可以处理0至多个流,并给出相应的反馈,比如提交或者回滚。

  • Connection:有界缓冲区,不同处理器之间的连接纽带,他是一个消息队列,可以接收不同的处理器,并与之以不同的流频率进行交互,这些队列可以动态分配优先级,并且可以有负载的上限,从而实现反压。

  • Flow Controller:流量控制器负责管理有多少处理器的连接和管理线程以及分配资源,他作为不同处理器之间的数据流交换代理;

  • Process Group:处理器组是一些连在一起的处理器的组合,他可以通过inputport得到数据,也可以通过outputport发送数据,我们可以使用不同的处理器组,构造更多的组合。

NIFI面板

[外链图片转存失败(img-IAgeYybH-1566262085393)(index_files/556b215c-05ab-42df-aaee-9fcdc95fa66d.png)]
区域一
这里就是“操作画布“,所有的对数据流的操作基本都在这个上面进行,在这上面可以进行”拖、拽、拉、连线…“等等操作,至于这几个操作的具体作用是什么,在后续的实例中会具体介绍。(从图中可以看到画布上面有几个我之前建好的组)
区域二
这里主要是构造数据流操作的主要面板。

  • [外链图片转存失败(img-MUBC8ojJ-1566262085396)(index_files/b3998810-52e4-4e5b-99ee-c6f4655d2d6f.png)]添加模块(processor)
    nifi内部会提供各个处理模块,当我们在进行数据处理的过程中,可以选择不同的模块并调整变量进行拼装,从而组合成一个完整的数据流处理的组。

  • [外链图片转存失败(img-JOlpwfTK-1566262085400)(index_files/96af742e-c219-4a66-906f-58848644678b.png)]添加数据流传入点(input-port)
    虽说是数据流输入点,但是并不是整体数据流的起点。它是作为组与组之间的数据流连接的传入点与输出点。

  • 在这里插入图片描述添加数据流输出点(output-port)
    同理上面的输入点。它是作为组与组之间的数据流连接的传入点与输出点。

  • 在这里插入图片描述添加组(process-group)
    组相当于系统中的文件夹,作用就是使数据流的各个部分看起来更工整,思路更清晰,不至于从头到尾一条线阅读起来十分不方便。

  • 在这里插入图片描述添加远端的组(remote process-group)
    根据弹出框进行信息配置,可加入远程的组。

  • 在这里插入图片描述

  • 在这里插入图片描述拉取已有的文件(template)
    每当做好一个完整的数据流后,可存储到本地为xml文件,nifi支持本地的template上传,这个按钮就是在上传本地template之后,选择上传过的一个获取到操作画布上。

  • 在这里插入图片描述添加便签(label)
    相当于便签,可放置在画布空白处,写上备注信息。

区域三
这一部分是对区域一这个画布的缩小预览,点击放大缩小可调整视野,蓝框区域就是画布当前的界面,可用鼠标在这部分进行移动从而调整画布的视野。

区域四

  • [外链图片转存失败(img-KNiGSOcE-1566262085403)(index_files/509f83c5-03ac-4587-997f-66ac2a6ad83c.png)]开始运行
    选中模块并点击运行按钮,开始进行对数据流的处理。

  • 在这里插入图片描述停止运行
    选中模块并点击停止按钮,则停止了进行对数据流的处理。

  • 在这里插入图片描述保存template
    选择你要保存的一个template,点击这个保存按钮,可把这个template保存到nifi系统里(并不是电脑本地,如果想保存到电脑本地,可点击右上角[外链图片转存失败(img-VNGz53lE-1566262085405)(index_files/08a012d1-e7ae-44b1-b1b7-26079670403d.png)]这个按钮,选择Template,弹出的页面上有下载选项)。

  • 在这里插入图片描述上传template
    可上传本地的template(xml文件)到nifi系统里。

架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/210062
0

发表评论