Apache NiFi简介

article/2025/8/16 3:03:33

一个易用、强大、可靠的数据处理与分发系统。基于Web图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集等功能

一、什么是NiFi?

NiFi是美国国家安全局开发并使用了8年的可视化数据集成产品,2014年NAS将其贡献给了Apache社区,2015年成为Apache顶级项目

传统的数据流解决方案往往会遇到以下挑战:

  • 网络错误
  • 硬盘错误
  • 软件崩溃
  • 人为错误
  • 数据生产能力超过消费能力
  • 对现有数据流进行增加、修改需要的操作太复杂

二、NiFi的特性

1. 可视化控制

NiFi提供一个可视化的数据流展现与编辑,使得用户处理数据流更加直观。在数据流上做出修改时,这个更改将立即在时机生产中产生作用。 用户进行局部修改时,不需要停止整个流处理过程。

2. 保证交付

3. 数据背压

NiFi提供队列缓存,当生产速度大于消费速度时。能提供数据背压能力

4.高扩展性

5.优先级队列

NiFi允许设置一个或多个优先级方案。默认为先进先出策略,也可以设置为后进先出、最老的数据先出、最新的数据先出

6.流式QoS保障

经常有一些数据是非常重要且不能丢失的,需要低延迟处理,NiFi能够为这些数据流提供QoS保障。

7.数据跟踪

NiFi自动记录对数据流的每一次操作

8.记录、恢复 历史数据

NiFi提供数据追踪记录功能,用户能够对中间过程的内容进行下载和回放。

9.模板

很多数据流模式,是可以复用的。NiFi允许用户发布设计模板并共享给其他人

10.安全性

系统间,NiFi可以通过双向SSL进行数据加密

三、NiFi 组件

1.FlowFile

FlowFile代表每个被系统处理的数据对象。每个FlowFile由两部分组成:属性和内容。内容是数据本身,属性是与数据相关的key-value键值对,用于描述数据

2.Processor

Processor可以用来创建、发送、接受、转换、路由、分割、合并、处理 FlowFiles。Processor可以访问给定的FlowFile

3.Connection

提供Processors之间的连接,作为Processors之间的缓冲队列。用来定义Processors之间的执行关系,并允许不同Processors之间以不同的速度进行交互

4.Process Group

一个特定集合的Processors与他们之间的连接关系形成一个ProcessGroup

6.Controller Service

7.Reporting Task

Reporting Task是一种后台运行的组件,可将Metrics指标、监控信息、内部NiFi状态发送到外部

8.Funnel

漏斗是一个NiFi组件,用于将来自多个连接的数据组合成单个连接。

四、系统架构

1.WebServer 提供NiFiWeb界面 和 RestAPI

五、有哪些处理器可用

1.数据转换

  • CompressContent:压缩或解压缩内容
  • ConvertCharacterSet:用于将一种字符编码集转换成另一种
  • EncryptContent:加密或解密内容
  • ReplaceText:使用正则表达式修改文本内容
  • TransformXml:将XSLT转换应用于XML内容
  • JoltTransformJSON:应用JOLT规范来转换JSON内容

2.路由和调解

  • ControlRate:限制数据流量
  • DetectDuplicate:根据一些用户定义的条件监视重复的FlowFiles。经常与HashContent一起使用
  • DistributeLoad:通过用户定义的规则,把某些数据发到特定的Relationship,实现负载均衡
  • MonitorActivity:在指定的时间内,没有任何数据通过流即发送通知,也可选择在数据流恢复时发送通知
  • RouteOnAttribute:根据FlowFile包含的属性,路由FlowFile
  • ScanAttribute:扫描FlowFile的属性,看是否有匹配的属性
  • RouteOnContent:通过FlowFile内容 路由FlowFile
  • ScanContent:扫描FlowFile的内容,看是否有匹配的内容
  • ValidateXml:针对XML模式验证XML内容; 基于用户定义的XML模式,检查FlowFile是否有效。

3.数据库访问

  • ConvertJSONToSQL:将JSON文档转换为SQL INSERT或UPDATE命令,然后将其传递给PutSQL处理器
  • ExecuteSQL:执行用户定义的SQL SELECT命令,将结果写入Avro格式的FlowFile
  • PutSQL:通过执行FlowFile内容定义的SQL DDM语句来更新数据库
  • SelectHiveQL:针对Apache Hive数据库执行用户定义的HiveQL SELECT命令,将结果以Avro或CSV格式写入FlowFile
  • PutHiveQL:通过执行由FlowFile的内容定义的HiveQL DDM语句来更新Hive数据库

4.属性提取

  • EvaluateJsonPath:用户提供JSONPath表达式(与用于XML解析/提取的XPath类似),然后根据JSON内容评估这些表达式,以替换FlowFile内容或将该值提取到用户命名的属性中。
  • EvaluateXPath:用户提供XPath表达式,然后根据XML内容评估这些表达式,以替换FlowFile内容,或将该值提取到用户命名的属性中。
  • EvaluateXQuery:用户提供XQuery查询,然后根据XML内容评估此查询,以替换FlowFile内容或将该值提取到用户命名的属性中。
  • ExtractText:用户提供一个或多个正则表达式,然后根据FlowFile的文本内容进行评估,然后将提取的值作为用户命名的属性添加。
  • HashAttribute:***对用户定义的现有属性列表的并置执行散列函数。
  • HashContent:***对FlowFile的内容执行散列函数,并将哈希值作为属性添加。
  • IdentifyMimeType:评估FlowFile的内容,以便确定FlowFile封装的文件类型。该处理器能够检测许多不同的MIME类型,例如图像,文字处理器文档,文本和压缩格式等
  • UpdateAttribute:更新Attribute

5.系统交互

  • ExecuteProcess:***运行用户定义的Operating System命令。进程的StdOut被重定向,使得写入StdOut的内容成为出站FlowFile的内容。该处理器是源处理器 - 其输出预计将生成一个新的FlowFile,并且系统调用预期不会接收输入。为了向进程提供输入,请使用ExecuteStreamCommand处理器。
  • ExecuteStreamCommand:***运行用户定义的Operating System命令。FlowFile的内容可选地流式传输到进程的StdIn。写入StdOut的内容成为hte出站FlowFile的内容。该处理器不能使用源处理器 - 它必须被馈送进入FlowFiles才能执行其工作。要使用源处理器执行相同类型的功能,请参阅ExecuteProcess Processor。

6.数据接入

  • GetFile:将文件的内容从本地磁盘(或网络连接的磁盘)流入NiFi。
  • GetFTP:通过FTP将远程文件的内容下载到NiFi中。
  • GetSFTP:通过SFTP将远程文件的内容下载到NiFi中。
  • GetJMSQueue:从JMS队列中下载消息,并根据JMS消息的内容创建一个FlowFile。也可以将JMS属性复制为属性。
  • GetJMSTopic:从JMS主题下载消息,并根据JMS消息的内容创建一个FlowFile。也可以将JMS属性复制为属性。此处理器支持持久和非持久订阅。
  • GetHTTP:将基于HTTP或HTTPS的远程URL的内容下载到NiFi中。处理器将记住ETag和Last-Modified Date,以确保数据不会持续摄取。
  • ListenHTTP:启动HTTP(或HTTPS)服务器并监听传入连接。对于任何传入的POST请求,请求的内容将作为FlowFile写出,并返回200响应码。
  • ListenUDP:侦听传入的UDP数据包,并为每个数据包或每包数据包创建一个FlowFile(取决于配置),并将FlowFile发送到成功关系。
  • GetHDFS:在HDFS中监视用户指定的目录。每当一个新的文件进入HDFS,它被复制到NiFi中。该处理器仅在主节点上运行,如果在群集中运行。为了从HDFS中复制数据并保持原样,或者从集群中的多个节点流出数据,请参阅ListHDFS处理器。
  • ListHDFS / FetchHDFS:ListHDFS监视HDFS中用户指定的目录,并发出一个FlowFile,其中包含遇到的每个文件的文件名。然后它通过分布式缓存通过整个NiFi集群来保持此状态。然后,这些FlowFiles可以跨群集扇出,并发送到FetchHDFS处理器,该处理器负责获取这些文件的实际内容,并发出包含从HDFS获取的内容的FlowFiles。
  • FetchS3Object:从Amazon Web Services(AWS)简单存储服务(S3)中获取对象的内容。出站FlowFile包含从S3接收的内容。
  • GetKafka:从Apache Kafka获取消息,专门用于0.8.x版本。消息可以作为每个消息的FlowFile发出,或者可以使用用户指定的分隔符进行批处理。
  • GetMongo:对MongoDB执行用户指定的查询,并将内容写入新的FlowFile。
  • GetTwitter:允许用户注册一个过滤器来收听Twitter”garden hose” 或Enterprise endpoint,为收到的每个推文创建一个FlowFile。

7.数据出口/发送数据

  • PutEmail:向配置的收件人发送电子邮件。FlowFile的内容可选择作为附件发送。
  • PutFile:将 FlowFile的内容写入本地(或网络连接)文件系统上的目录。
  • PutFTP:将 FlowFile的内容复制到远程FTP服务器。
  • PutSFTP:将 FlowFile的内容复制到远程SFTP服务器。
  • PutJMS:将 FlowFile的内容作为JMS消息发送到JMS代理,可选择基于属性添加JMS属性。
  • PutSQL:作为SQL DDL语句(INSERT,UPDATE或DELETE)执行 FlowFile的内容。FlowFile的内容必须是有效的SQL语句。可以使用属性作为参数,以便FlowFile的内容可以参数化SQL语句,以避免SQL注入攻击。
  • PutKafka:将一个FlowFile的内容作为消息传递给Apache Kafka,专门用于0.8.x版本。FlowFile可以作为单个消息发送,或者可以指定分隔符,例如新行,以便为单个FlowFile发送许多消息。
  • PutMongo:将 FlowFile的内容作为INSERT或UPDATE发送到Mongo。

8.分割和聚合

  • SplitText:SplitText采用单个FlowFile,其内容为文本,并根据配置的行数将其拆分为1个或更多个FlowFiles。例如,处理器可以配置为将FlowFile拆分成许多FlowFiles,每个FlowFiles只有1行。
  • SplitJson:允许用户将由数组或许多子对象组成的JSON对象拆分为每个JSON元素的FlowFile。
  • SplitXml:允许用户将XML消息拆分成许多FlowFiles,每个FlowFiles都包含原始的段。当通过“包装”元素连接几个XML元素时,通常使用这种方法。然后,该处理器允许将这些元素分割成单独的XML元素。
  • UnpackContent:解压缩不同类型的归档格式,如ZIP和TAR。存档中的每个文件随后作为单个FlowFile传输。
  • MergeContent:该处理器负责将许多FlowFiles合并到一个FlowFile中。FlowFiles可以通过将其内容与可选的页眉,页脚和分隔符连接起来,或者通过指定ZIP或TAR等存档格式来合并。FlowFiles可以根据一个共同的属性进行合并,如果被其他Splitting进程拆分,则可以进行“碎片整理”。每个bin的最小和最大大小都是基于元素数量或FlowFiles内容的总大小进行用户指定的,并且可以分配可选的超时,以便FlowFiles只会等待其指定的时间。
  • SegmentContent:根据一些配置的数据大小,将FlowFile分段到潜在的许多较小的FlowFiles中。拆分不是针对任何分隔符而是基于字节偏移来执行的。这是在传送FlowFiles之前使用的,以便通过并行发送许多不同的片段来提供更低的延迟。另一方面,这些FlowFiles可以由MergeContent处理器使用碎片整理模式进行重新组合。
  • SplitContent:将单个FlowFile拆分为潜在的许多FlowFiles,类似于SegmentContent。但是,对于SplitContent,分割不是在任意字节边界上执行,而是指定要分割内容的字符串。

9.HTTP

  • GetHTTP:将基于HTTP或HTTPS的远程URL的内容下载到NiFi中。处理器将记住ETag和Last-Modified Date,以确保数据不会持续摄取。
  • ListenHTTP:启动HTTP(或HTTPS)服务器并监听传入连接。对于任何传入的POST请求,请求的内容将作为FlowFile写出,并返回200个响应。
  • InvokeHTTP:执行由用户配置的HTTP请求。该处理器比GetHTTP和PostHTTP更加通用,但需要更多的配置。该处理器不能用作源处理器,并且必须具有传入的FlowFiles才能被触发以执行其任务。
  • PostHTTP:执行HTTP POST请求,发送FlowFile的内容作为消息的正文。这通常与ListenHTTP一起使用,以便在不能使用Site to Site的情况下(例如,当节点不能直接访问,但能够通过HTTP进行通信时)在两个不同的NiFi实例之间传输数据)。注意:HTTP可用作站点到站点运输协议除了现有的RAW Socket传输。它还支持HTTP代理。推荐使用HTTP Site to Site,因为它具有更高的可扩展性,并且可以使用输入/输出端口提供双向数据传输,具有更好的用户认证和授权。
  • HandleHttpRequest / HandleHttpResponse:HandleHttpRequest处理器是一个源处理器,它与ListenHTTP类似地启动嵌入式HTTP(S)服务器。但是,它不会向客户端发送响应。相反,FlowFile与HTTP请求的主体一起发送,作为其作为属性的所有典型Servlet参数,标头等的内容和属性。HandleHttpResponse可以在FlowFile处理完成后将响应发送回客户端。这些处理器总是被期望彼此结合使用,并允许用户在NiFi内直观地创建Web服务。

10.亚马逊网络服务

  • FetchS3Object:获取存储在Amazon Simple Storage Service(S3)中的对象的内容。然后将从S3检索的内容写入FlowFile的内容。
  • PutS3Object:使用配置的凭据,密钥和存储桶名称将 FlowFile的内容写入到Amazon S3对象。
  • PutSNS:将 FlowFile的内容作为通知发送到Amazon Simple Notification Service(SNS)。
  • GetSQS:从Amazon Simple Queuing Service(SQS)中提取消息,并将消息的内容写入FlowFile的内容。
  • PutSQS:将 FlowFile的内容作为消息发送到Amazon Simple Queuing Service(SQS)。
  • DeleteSQS:从亚马逊简单排队服务(SQS)中删除一条消息。这可以与GetSQS一起使用,以便从SQS接收消息,对其执行一些处理,然后只有在成功完成处理后才从队列中删除该对象。

六、安装HDF

1
2
3
4
5
6
7
cd /tmp
wget http://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.0.1.1/tars/hdf_ambari_mp/hdf-ambari-mpack-3.0.1.1-5.tar.gz
ambari-server install-mpack --mpack=/tmp/hdf-ambari-mpack-3.0.1.1-5.tar.gz --verbose
ambari-server restartyum install -y yum-utils createrepo
yum install -y yum-plugin-priorities

七、参考文档

  1. Apache NiFi 概述

  2. Apache NiFi 用户指南

  3. Apache NiFi 管理指南

  4. Apache NiFi表达式语言指南

  5. Apache NiFi 开发者指南

  6. Apache NiFi RestAPI

  7. ExecuteScript使用

  8. NiFi监控

  9. Hive事务管理避坑指南

  10. NiFi在大数据环境下的企业数据自动化集成是这样的


http://chatgpt.dhexx.cn/article/UknnAdXp.shtml

相关文章

【NiFi】(一)NiFi 简介及核心概念

文章目录 一、简介二、NiFi 核心概念三、设计模型四、NiFi 架构五、NiFi 的性能期望与特点六、NiFi 功能的高级概述 一、简介 Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统,用于自动化管理系统间的数据流。它支持高度可配置的指示…

nifi从入门到实战(保姆级教程)——环境篇

背景: 公司领导决定将各种基础数据的导入从代码中分离出来,用Apache Nifi替换。使开发者们更关注在业务上,而不用关心基础的由来。 Apache Nifi对于整个团队都是一个全新的工具,之前大家都没有接触过,甚至是第一次听说…

1、nifi-1.9.2介绍、单机部署及简单验证

Apache NiFi系列文章 1、nifi-1.9.2介绍、单机部署及简单验证 2、NIFI应用示例-GetFile和PutFile应用 3、NIFI处理器介绍、FlowFlie常见属性、模板介绍和运行情况信息查看 4、集群部署及验证、监控及节点管理 5、NiFi FileFlow示例和NIFI模板示例 6、NIFI应用场景-离线同步Mys…

Nifi集群安装配置

机器 目录 免密登录 nifi001d /opt/software/nifi nifi001d>>nifi002d、nifi003d niif002d /opt/software/nifi nifi002d>>nifi001d、nifi003d niif002d /opt/software/nifi nifi003d>>nifi001d、nifi002d 1、安装nifi (1&#xff…

NIFI 入门使用

1. Kettle与NIFI差异 Kettle 介绍 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一…

《数据同步-NIFI系列》Nifi详细教程入门-06Nifi基础操作

Nifi基础操作 1 主页面 2 组 2.1 创建组 从常用功能模块,拖动组到画布上,自定义组名。可以通过鼠标移动组在画布位置。 2.2 进入、退出组 选中某一个组,单击右键选择enter group或者双击组进入组内,在组内单击右键选择leave g…

nifi-搭建

NIFI 简介 1、NIFI 的概念 1.1 起源:NIFI是为了自动化的处理和管理系统之间的数据流而产生的,基本设计概念与基于流的编程[fbp]的主要思想密切相关 1.2 nifi核心概念 FlowFile:FlowFile表示通过系统移动的每个对象,包含数据流的基…

9、NIFI综合应用场景-通过NIFI配置kafka的数据同步

Apache NiFi系列文章 1、nifi-1.9.2介绍、单机部署及简单验证 2、NIFI应用示例-GetFile和PutFile应用 3、NIFI处理器介绍、FlowFlie常见属性、模板介绍和运行情况信息查看 4、集群部署及验证、监控及节点管理 5、NiFi FileFlow示例和NIFI模板示例 6、NIFI应用场景-离线同步Mys…

Apache NiFi 入门指南

本指南使用于谁? 本指南适用于从未使用过,在NiFi中有限度接触或仅完成特定任务的用户。本指南不是详尽的说明手册或参考指南。“ 用户指南”提供了大量信息,旨在提供更加详尽的资源,并且作为参考指南非常有用。相比之下&#xff…

2、NIFI应用示例-GetFile和PutFile应用

Apache NiFi系列文章 1、nifi-1.9.2介绍、单机部署及简单验证 2、NIFI应用示例-GetFile和PutFile应用 3、NIFI处理器介绍、FlowFlie常见属性、模板介绍和运行情况信息查看 4、集群部署及验证、监控及节点管理 5、NiFi FileFlow示例和NIFI模板示例 6、NIFI应用场景-离线同步Mys…

大数据NiFi(三):NiFi关键特性

文章目录 NiFi关键特性 一、​​​​​​​​​​​​​​流管理

NiFi学习笔记

目录 NiFi概念 NiFi是什么 Apache NiFi 包括以下功能 NIFI核心概念 NiFi架构 NiFi入门 常用术语 下载安装NiFi 启动和关闭NIFI NIFI处理器 查看处理器 常用处理器 配置处理器 其他组件 应用场景 1.添加和配置第一个处理器GetFile 2.添加第二个处理器PutFile NiF…

NiFi的简介

使用java开发的一个开源项目,数据处理工具 1.简介: NiFi 是一个易于使用、功能强大而且可靠的流式数据处理和分发系统。NiFi 是为数据流设计,支持从多种数据源动态的拉取数据,并基于WEB图形界面,通过拖拽、连接、配置…

Nifi的入门使用

Nifi的使用 1.官方文档2.Nifi简介3.简单使用4.Template 使用nifi前,需要知道ETL在做什么,如果源端和目标端栏位不匹配,就需要用到小帮手, 让你更直观的了解映射关系,才能更好的构建DataFlow 第一步:Nifi开发…

NiFi【部署 01】NiFi最新版本1.18.0下载安装配置启动及问题处理(一篇学会部署NiFi)

Apache NIFI中文文档 地址:https://nifichina.github.io/ 1.简介 官网的介绍: An easy to use, powerful, and reliable system to process and distribute data. 一个易用、功能强大、可靠的处理和分发数据的系统。 来自网络的介绍: 2006…

5、NiFi FileFlow示例和NIFI模板示例

Apache NiFi系列文章 1、nifi-1.9.2介绍、单机部署及简单验证 2、NIFI应用示例-GetFile和PutFile应用 3、NIFI处理器介绍、FlowFlie常见属性、模板介绍和运行情况信息查看 4、集群部署及验证、监控及节点管理 5、NiFi FileFlow示例和NIFI模板示例 6、NIFI应用场景-离线同步Mys…

大数据NiFi(二):NiFi架构

文章目录 NiFi架构 一、​​​​​​​NiFi核心概念

Nifi:nifi的基本使用

Nifi的安装使用 爱购物 www.cqfenfa.com Nifi安装 首先说一下Nifi的安装,这里Nifi可以支持Windows版和Linux,只需要去官网:http://nifi.apache.org/ 根据自己需要的版本,选择下载,然后安装解压就行 各目录及主要文件…

大数据NiFi(一):什么是NiFi

文章目录 什么是NiFi 一、NiFi背景介绍

Nifi介绍、安装、实践案例

第1章NiFi基本概念 1.1 概述 简单地说,NiFi是为了自动化系统之间的数据流而构建的。虽然术语“数据流”在各种环境中使用,但我们在此处使用它来表示系统之间自动化和管理的信息流。这个问题空间一直存在,因为企业有多个系统,其中…