一个易用、强大、可靠的数据处理与分发系统。基于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. 1

  2. 2

  3. 3

  4. 4

  5. 5

  6. 6

  7. 7

  1. cd /tmp

  2. 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

  3. ambari-server install-mpack --mpack=/tmp/hdf-ambari-mpack-3.0.1.1-5.tar.gz --verbose

  4. ambari-server restart

  5. yum install -y yum-utils createrepo

  6. 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在大数据环境下的企业数据自动化集成是这样的

Apache NiFi简介相关推荐

  1. 深入解析Apache NIFI的调度策略

    简介:本文主要讲解Apache NIFI的调度策略,对象主要是针对Processor组件.本文假定读者已经对Apache NIFI有了一定的了解和使用经验,同时作者也尽可能的去讲解的更透彻,使得本文尽 ...

  2. Apache NiFi远程代码执行-RCE

    目录 一. 漏洞简介 二. 影响版本 三. docker-compose进行漏洞环境搭建 四. 漏洞复现 五. 漏洞挖掘 六. 漏洞修复 一. 漏洞简介 Apache NiFi 是一个易于使用.功能强 ...

  3. Apache NIFI 安装 ● 操作 ● 文件同步 ● oracle 数据库增量同步实例讲解

    nifi简介 nifi背景 NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化.可定制的数据集成产品.2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apac ...

  4. Apache Nifi JoltTransformJSON JOLT 语法解析

    Apache Nifi 系列 之 JOLT 语法解析 文章目录 Apache Nifi 系列 之 JOLT 语法解析 前言 一.JLOT是什么? 二.Demo 解析 1.input 2.json sp ...

  5. Apache Mahout 简介

    Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...

  6. Apache Nifi 实战:多表导入实现及填坑 GitChat连接

    NiFi 是美国国家安全局开发并使用了 8 年的可视化数据集成产品,2014 年 NAS 将其贡献给了 Apache 社区,2015 年成为 Apache 顶级项目. 大数据平台都需要进行数据流转,A ...

  7. Apache Nifi 入门与进阶 GitChat连接

    NiFi 是美国国家安全局开发并使用了 8 年的可视化数据集成产品,2014 年 NAS 将其贡献给了 Apache 社区,2015 年成为 Apache 顶级项目. 大数据平台都需要进行数据流转,A ...

  8. Apache nifi 集群安装

    原文地址:https://pierrevillard.com/2016/08/13/apache-nifi-1-0-0-cluster-setup/ 文章写的很好了,步骤性的英文写得也比较易懂,原样搬 ...

  9. Apache Ant 简介和配置

    Apache Ant 简介 Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展. 本文主要内 ...

  10. 【Hadoop Summit Tokyo 2016】一小时之内使用Apache Nifi从零到数据流

    本讲义出自San Jose在Hadoop Summit Tokyo 2016上的演讲,主要介绍了为什么在钻探行业复合数据流非常重要,以及当前Apache Nifi的发展概况和突破点,还介绍了不被期待的 ...

最新文章

  1. Lombok: Java开发的利器
  2. realmeq参数配置详情_小米11什么时候发布 小米11参数配置详情
  3. KDD2021 放榜,6 篇论文带你了解阿里妈妈AI技术
  4. macOS下Apache+nginx+mysql+php多版本切换的配置
  5. leetcode37. 解数独(hashmap+回溯)
  6. 一套代码两端运行不靠谱?是时候放弃 C++ 跨 Android、iOS 端开发!
  7. VB.NET 中图形旋转任意角度 [ZT]
  8. 去中心化交易所如雨后春笋,EOS交易所崭露头角
  9. IFC标准是什么标准?IFC标准的发展历程是怎样的?
  10. 看漫画学python 电子书_看漫画学Python电子版(mobi azw3 epub)
  11. 如何使用 SEGGER Embedded Studio创建库文件?
  12. matplotlib画图使用微软雅黑字体
  13. ASP.NET Core 中文文档目录
  14. 微信小程序与HTML5的标签差异梳理
  15. 记swagger离线文档乱码解决
  16. 数组元素循环左移n个位置(JAVA)
  17. 【netron】模型可视化工具netron
  18. android 更改浏览器默认主页
  19. 使用WindowsAPPDriver做PC客户端自动化测试
  20. java酒吧会所预定系统ssm

热门文章

  1. 利用Reachability判断网络环境(WAN/WIFI)
  2. node.js(二 --- events 、buffer、)
  3. 跳跃表(SkipList)
  4. 前端开发人员的精彩文字
  5. 私域流量分析之李子柒
  6. Java小项目之拼图游戏
  7. 国外著名博客 Gizmodo 博主 Brian Lam 访谈录
  8. 实现APNG图片解码及缩放显示
  9. 计算机考研复习资料推荐(转载)
  10. 【爬坑记录】记录搭建fabric 遇到的问题-network e2ecli_default not found