Apache NiFi 简介
好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.
NiFi 总结
一个易用、强大、可靠的数据处理与分发系统。基于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
|
七、参考文档
Apache NiFi 概述
Apache NiFi 用户指南
Apache NiFi 管理指南
Apache NiFi表达式语言指南
Apache NiFi 开发者指南
Apache NiFi RestAPI
ExecuteScript使用
NiFi监控
Hive事务管理避坑指南
NiFi在大数据环境下的企业数据自动化集成是这样的
Apache NiFi 简介相关推荐
- 深入解析Apache NIFI的调度策略
简介:本文主要讲解Apache NIFI的调度策略,对象主要是针对Processor组件.本文假定读者已经对Apache NIFI有了一定的了解和使用经验,同时作者也尽可能的去讲解的更透彻,使得本文尽 ...
- Apache NiFi远程代码执行-RCE
目录 一. 漏洞简介 二. 影响版本 三. docker-compose进行漏洞环境搭建 四. 漏洞复现 五. 漏洞挖掘 六. 漏洞修复 一. 漏洞简介 Apache NiFi 是一个易于使用.功能强 ...
- Apache NIFI 安装 ● 操作 ● 文件同步 ● oracle 数据库增量同步实例讲解
nifi简介 nifi背景 NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化.可定制的数据集成产品.2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apac ...
- Apache Nifi JoltTransformJSON JOLT 语法解析
Apache Nifi 系列 之 JOLT 语法解析 文章目录 Apache Nifi 系列 之 JOLT 语法解析 前言 一.JLOT是什么? 二.Demo 解析 1.input 2.json sp ...
- Apache Mahout 简介
Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...
- Apache Nifi 实战:多表导入实现及填坑 GitChat连接
NiFi 是美国国家安全局开发并使用了 8 年的可视化数据集成产品,2014 年 NAS 将其贡献给了 Apache 社区,2015 年成为 Apache 顶级项目. 大数据平台都需要进行数据流转,A ...
- Apache Nifi 入门与进阶 GitChat连接
NiFi 是美国国家安全局开发并使用了 8 年的可视化数据集成产品,2014 年 NAS 将其贡献给了 Apache 社区,2015 年成为 Apache 顶级项目. 大数据平台都需要进行数据流转,A ...
- Apache nifi 集群安装
原文地址:https://pierrevillard.com/2016/08/13/apache-nifi-1-0-0-cluster-setup/ 文章写的很好了,步骤性的英文写得也比较易懂,原样搬 ...
- Apache Ant 简介和配置
Apache Ant 简介 Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展. 本文主要内 ...
- 【Hadoop Summit Tokyo 2016】一小时之内使用Apache Nifi从零到数据流
本讲义出自San Jose在Hadoop Summit Tokyo 2016上的演讲,主要介绍了为什么在钻探行业复合数据流非常重要,以及当前Apache Nifi的发展概况和突破点,还介绍了不被期待的 ...
最新文章
- 局部敏感哈希算法的实现
- 内容激活码jsp发送email
- 获取拍照图片,显示大图像
- Servlet 介绍
- linux system V IPC 信号灯和共享内存实例
- ubuntu中pycharm无法输入汉字
- Excel对话框大全
- 完美解决:Could not open the editor: Editor could not be initialized
- Linux下配置安装NFS
- 只想着一直调用一直爽, 那API凭证泄漏风险如何破?
- cpu渲染测试软件,CPU多核项目大比拼 Corona渲染器测试
- 分形、混沌理论、集异璧之大成
- 计算机科学与技术专业课程简介
- ceph 集群报 mds cluster is degraded 故障排查
- 华为S5700-SI 系统打补丁
- 变量和简单数据类型(化浮为整)
- MT41K256M16TW-107 AUT:P美光内存颗粒D9TRN
- 把本地项目上传到码云的整个过程(图文详解)
- js 省市级练。js 省市
- 美国区块链公司Espresso Systems因涉嫌知识产权盗窃被起诉
热门文章
- Linux架设DNS服务器(ChinaITLab.com 搜集整理)
- 概率论 方差公式_2020考研数学:概率论核心考点与常见题型(上)
- python 拼音排序_Python实现针对中文排序的方法
- MAC CPU温度监视及风扇速度控制软件
- HTML静态网页作业——仿天猫购物商城(7页) 网页设计作业,网页制作作业, 学生网页作业, 网页作业成品, 网页作业模板
- 硬盘的老化测试软件,扩容卡检测、扩容U盘检测工具(MyDiskTest)
- 城通网盘文件地址分析器
- HttpClient4.X 升级 入门 + http连接池使用
- 华为云学院-人人学loT学习笔记- 第四章 物联网关 汇聚回传
- Android开源库——xUtils框架