NIFI支持强大的可扩展的数据路由,转换和系统中介逻辑的有向图。是一个易于使用,功能强大,可靠的数据处理和分发系统。

以下是NIFI的一些高级功能和目标:

  • 基于Web的用户界面
  1. 设计,控制,反馈以及监控之间无缝衔接
  • 高度可配置
  1. 容错和保证交付
  2. 低延迟以及高吞吐
  3. 支持动态分区
  4. 数据流可以在运行时修改
  5. 背压设计
  • 数据源
  1. 跟踪数据从头到尾
  • 为扩展而设计
  1. 构建自己的处理器
  2. 能够快速开发和有效测试
  • 安全
  1. SSL,SSH,HTTPS,内容加密等
  2. 多租户授权和内部授权/策略管理

什么是NIFI?

简单的说,NIFI就是为了自动化系统之间的数据流而建立的。虽然数据流这个词出现在很多的上下文中,在这里数据流特指系统之间自动的和被管理的信息流。因为企业往往有多个系统,其中有一些系统在生产数据,有一些系统在消费数据。这期间出现的问题和解决方案被广泛讨论。

数据流面临的重大挑战是什么呢?

  • 系统故障
  1. 网络故障
  2. 磁盘故障
  3. 软件故障
  4. 以及人为的失误等
  • 数据获取超过数据消费能力
  1. 当数据处理模块有某一瓶颈时,往往不能够及时处理到达的数据
  • 数据边界条件仅仅是建议
  1. 总是会得到太大,太小,太快,太慢,损坏,错误或者格式错误的数据。
  • 系统之间发展进度不一致
  1. 系统之间发展进度不一致,从而经常需要在生产系统中进行新数据流的添加以及已有数据流的修改,而且这些改动需要更加迅速的实现。
  • 合理性和安全性
  1. 法律,法规和政策的改变,企业对企业协议的变更,系统与系统之间和系统和用户之间的交互必须是安全,可靠和负责任的。
  • 生产环境持续改进和提升
  1. 由于在开发环境中复制生产环境的模式或者状态是几乎不太可能的,所以很多时候需要在生产环境,系统运行时状态下对系统进行持续的改进和提升。

随着大数据的发展,数据流处理技术比以往显得更加的重要,并对其在应对复制性和适配性方面提出了更高的要求。而NIFI就是为解决以上问题而创建的。

NIFI的核心概念

简单的说,NIFI就是为了自动化系统之间的数据流而建立的。虽然数据流这个词出现在很多的上下文中,在这里数据流特指系统之间自动的和被管理的信息流。因为企业往往有多个系统,其中有一些系统在生产数据,有一些系统在消费数据。这期间出现的问题和解决方案被广泛讨论。
(1) FlowFile (Information Packet)
一个FlowFile代表每个被系统处理的数据对象,一个FlowFile有两部分组成:属性和内容。其中内容是数据本身,属性是和数据相关的key-value的键值对,用来描述数据
(2) FlowFile Processor (Black Box)
Processor是NiFi的组件,可以用来创建,发送,接收,转换,路由,割裂,合并,处理FlowFiles。Processor可以访问一个给定的FlowFile的属性和数据内容。Processor可以基于一个给定工作单元中的0到多个FlowFile对象进行操作,从而进行任务的提交或者回滚。
(3) Connection (Bounded Buffer)
Connection 提供Processor之间的实际连接。通过Queue允许不同的进程以不同的速度进行交互。这些队列可以动态分配优先级,而且可以设置负载上限,从而实现背压。、
(4) Flow Controller (Scheduler)
Scheduler负责维护Processors之间的关联信息,并且管理所有处理器对于线程的使用,分配。Scheduler作为Processor之间的代理来促进FlowFile的交换。
(5) Process Group (subnet)
一个特定集合的Processors和它们之间的连接关系形成一个Processor Group, 其定义了从接受端口接收数据并通过输出端口发送数据,通过这种方式,一个Processor Group可以通过简单的组合其他组件来创建全新的组件。

NIFI的架构图

上图是NiFi的架构图。NiFi在安装有JVM的主机系统中运行。
NiFi在JVM中运行的主要组件有:
(1) WebServer(网络服务器)
主要用于承载NiFi基于HTTP的命令和控制API。
(2) FlowController (流控制器)
它是NiFi执行具体操作的大脑,负责从线程资源池中给Processor分配可执行的线程,以及其他资源调度的工作。
(3) FlowFile Repository (FlowFile 库)
其主要负责保存在目前活动流中FlowFile的活跃状态,其功能实现是可插拔的。默认的方式是通过一个存储在指定磁盘分区的持久预写日志来实现此功能。
(4) Content Repository (内容 库)
负责保存目前活动流中FlowFile的实际字节内容,其功能实现是可插拔的。默认的方式是一种相当简单的机制,即存储内容数据在文件系统中。多个存储路径可以被指定,因此可以将不同的物理路径进行结合,从而避免单个物理分区的存储上限。
(5) Provenance Repository (来源库)
Provenance Repository其负责保存所有起源事件数据,同样此功能也是可插拔的,并且默认可以在一个或者多个物理分区上进行存储,在每个路径下的事件数据都会被索引并且可以被查询。

NiFi同样可以以集群模式运行。
集群模式架构图:

从NiFi1.0开始,采用了Zero-Master集群范式。NiFi集群中的每个节点在数据上执行相同的任务,但是每个节点都在不同的数据集上运行。Apache Zookeeper选择一个节点作为集群协调器,故障转移由Zookeeper自动处理。所有集群节点都会向集群协调器报告心跳和状态信息。集群协调器负责断开和连接节点。另外,每个集群都有一个主节点,也有Zookeeper选出,作为DataFlow管理器,您可以通过任何节点的用户界面与NiFi集群进行交互。您所做的任何更改都会复制到集群中的所有节点,从而允许多个入口点。

参考:Apache NiFi官方网站

Nifi 数据流整合工具相关推荐

  1. 【原创】BI解决方案选型之ETL数据整合工具对比

    [原创]BI解决方案选型之ETL数据整合工具对比 参考文章: (1)[原创]BI解决方案选型之ETL数据整合工具对比 (2)https://www.cnblogs.com/xiongnanbin/p/ ...

  2. 生信多组学整合工具的比较研究

    今天给大家要分享是昆士兰科技大学Sathyanarayanan在Briefings in Bioinformatics(IF: 8.990)杂志上发表的论文.作者比较了九种不同的多组学数据整合工具,对 ...

  3. 字符编码解码整合工具

    在程序开发中经常会遇到字符编码解码问题,网上关于编码解码的工具也是很多,只是一种编码解码的软件居多,综合的可能是我没有发现,就有了制作整合这些工具的想法,界面没有美化,只是把几种常见的编码解码整合了一 ...

  4. 佳能2525i扫描驱动_您需要扫描仪整合工具吗?来试试ExactScan Pro for mac

    ExactScan Pro Mac是一款很实用的万能扫描仪整合工具,这款软件为大家准备了数百种专业文档扫描仪驱动程序,能够支持包括柯达,富士通,佳能,松下等品牌在内的扫描仪.为其用户提供了内置的条形码 ...

  5. 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用...

    在上一篇文章中,我们提到了图片必须是2的n次方的问题.但是随着Libgdx的不断完善和发展,使用一些工具就 可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看Textu ...

  6. 宏基因组分箱整合工具 DAS Tool从零学起笔记

    参考https://github.com/cmks/DAS_Tool DAS: dereplication, aggregation and scoring strategy DAS Tool可以将不 ...

  7. Lua整合工具 squish使用方法

    squish是一个开源的用于打包lua脚本的小工具,它的主要功能是将多个lua文件整合成一个文件,并在此基础上做压缩和混淆等处理,混淆和压缩后的代码可以直接被执行而不需要先做解压还原等操作. 它的gi ...

  8. NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)

    NIFI Site to Site 安全模式资料学习整合(均来自官网翻译) 官网连接:Apache NiFi 文档 概述-翻译官网 当发送数据从一个NIFI示例到另一个NIFI实例,此处可以使用很多不 ...

  9. nifi apache_Apache Nifi的工作原理-浏览数据流,不要淹没其中

    nifi apache by François Paupier 通过FrançoisPaupier Apache Nifi的工作原理-浏览数据流,不要淹没其中 (How Apache Nifi wor ...

  10. 面向大数据处理的数据流编程模型和工具综述

    点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...

最新文章

  1. 安装 Python MySQL 驱动(mysql-connector-python、MySQL-python)
  2. 2006鄂土整项目精神
  3. 你还在从零搭建 Java 项目 ?10000 字总结~
  4. 第三天学习Java的笔记(自增自减,赋值,比较,逻辑,三元)
  5. 重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29
  6. 查看自己设置的jvm参数
  7. 牛!又一顶级大厂开招.NET,5年35k!
  8. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别
  9. java dump分析工具_Java虚拟机详解(七)------虚拟机监控和分析工具(1)
  10. CCAI 2017 | 专访德国语言技术领军者 Hans Uszkoreit:深度学习还不足以解决 NLP 核心问题...
  11. php根据图片地址获取图片原始高宽,Js获取图片原始宽高的实现代码
  12. 直播 3.0 时代,在线教育行业的裂变和重构
  13. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.psl,因为在此系统上禁止运行脚本
  14. 基于hilbert变换的数字信号_通过Hilbert变换实现移相算法
  15. 令牌环访问控制的原理_通过Keycloak进行访问控制的级别,第1部分:令牌认证
  16. 水滴筹、轻松筹干架,从线上到线下:员工医院互殴引围观
  17. 天虹办公系统kk服务器,客户齐点赞,蓝凌KK 7.0大幅提升工作效率
  18. 考研英语(一)——简单句
  19. 含参变量积分------数学分析中重要的分析工具
  20. 这是一篇路由器踩坑的文章

热门文章

  1. Zeppelin0.8.1上操作hive(使用jdbc解释器)
  2. 软件使用-如何卸载360安全客户端
  3. easypoi 语法_【语法微课合集】50堂英语语法微课,视频课件免费下载,建议收藏或转发朋友圈...
  4. 参数问题:nested exception is java.lang.NumberFormatException: For input string: “null“,已解决。
  5. 网页360浏览器极速模式能打开,兼容模式打不开
  6. Element 表格序号问题
  7. 车载T- BOX全国产化电子元件推荐方案
  8. linux更换steam目录,如何删除Steam?
  9. python大写字母怎么读_python中字母大小写的转换,和一些字典的常规操作
  10. python函数库 阶跃 信号函数 调用_使用numpy增加阶跃函数中的分辨率