nifi集群_NIFI介绍

Nifi1.11.4简介

NiFi 最初由美国国家安全局(NSA)开发和使用的一个可视化、可定制的数据集成产品。2014 年 NSA 将其贡献给了 Apache 开源社区,2015 年 7 月成为 Apache 顶级项目。

NiFi 特性

033f1a91ab2c11baebf2e7b3a33fa208.png

NiFi 为数据流而设计,它可以用来在不同的数据中心之间搭建数据流通的管道。NiFi 通过拖拽界面、配置参数、简单地连接,即可完成对数据流的托管和系统间的自动化传输,使用者可以可视化整个过程并实时进行更改。它还有很多优秀的特性:

1. Web 界面拖放组件,并支持图形化配置

2. 使用人员无需进行代码开发

3. 支持多种数据源

4. 自动进行负载均衡和反压

5. 方便监控

6. 便于扩展且易恢复

7. 支持模板复用

核心名词解释

84408c103988b5cdb49f77681fdca826.png

FlowFile 系统处理器之间流通的对象

FlowFile Processor 处理数据的单位,我们二次开发也是开发这个Processor

Connection processor间的连线,本质是一个优先级队列,数据的缓冲背压(back press)和这个模块有关

Flow Controller 控制Process的连接,启动,停止时框架层面的东西

Process Group 处理器的集合

FlowFile 

可以类比http数据包,http用于web和后端系统的数据的数据交互,http数据放body,登录秘钥可以放cookie也可放header;而nifi的FlowFile是系统数据流转的最小数据包,由两个必要组成,内容存储单元和属性单元,存储单元放的是我们希望流转的数据,属性单元是对数据做的元数据描述;

c62798af9156bbedf8c8069f97b01ee7.png

框架简介

NiFi 是基于 Java 的,通过主机上的 JVM 来进行执行,主要由Web Server、Flow Controller、Repository 这三个核心部件组成

9210cf91ff052b228c2fc85f88d558fd.png

Web Server:NiFi 提供了基于 HTTP 协议的 Web 页面,我们可以通过 Web 页面来操作自己的 Task。

Flow Controller:NiFi 的核心部分,可以将其理解为文件交流的处理器。Processer 则是实际处理单元。l NiFi 将每一个功能集成到一个 Processor 上,Flow Controller 维持着多个处理器的连接并管理各个Processer。

l NiFi 提供了许多可用的 Processor,如Amazon、Attributes、Hadoop 等,我们在使用时可以直接拖拽 Processor 并更改其配置。

l 当官方的 Processor 不能支持我们的业务需求时,我们还可以利用 Nifi 的可扩展性进行定制开发。Repository:NiFi 提供了三个数据库 FlowFile、Content、Provenance,分别来存储数据流的运行状态、实际数据以及数据源信息。

集群简介

NiFi 也支持集群模式,运行时每个节点执行相同操作、不同数据。集群依赖 ZooKeeper。ZooKeeper 会选出主节点以及集群协调器,负责监督其他节点的心跳。

ef296892c18457a1b61c331d137d8eb4.png

强大的功能支持

685234e55f16f8a3e38e3293507d9399.png

这张图比较老,但是它告诉我们nifi主要涉及的技术点繁多,从一方面体现了它的功能强大。

2d0829ca68b17894ea944cb154ee1611.png

这张图是1.11.4的最新目前已经开源了287个处理器

关系型数据库 mysql,pgSql,sqlServer2008+,mysql2012+,oracle,oracle12+

非关系型数据库 mongodb

文件服务器:FTP

文件:excel,csv,hdfs,txt,zip(待确认)

消息中间件:Kafka,amqp,rabbit

搜索引擎:Elasticsearch

接口:HTTP

大数据:habse,hive(待确认)

其它(还有很多不常用的)

总结

本文简单介绍了一下nifi基本知识,后续文章会出更多的细节上的知识。

在笔者看来niif是一个强大的流式运行的分布式框架,适用做数据接入,数据分发;系统比较吃内存和cpu和磁盘的性能。

在笔者看来nifi的框架很优秀,尤其是nifi的数据有向图清楚的用户知道程序的运行情况,和传统数据黑盒运行,只能通过日志查看系统流程走向有很大区别,nifi天生的分布式架构,让用户对多线程的高并的程序开发也能做到得心应手;

nifi有很好的的调度策略,配合ExecuteScript 可以做系统调度;

nifi可以做很多事,如简单的ETL,并且现有源码也提供一些好用的处理器,但是笔者并不推荐使用nifi做ETL相关的工作,相比较kettle和datax,用nifi做ETL则不是那么专业;为什么这么说?传统ETL分为抽取,清洗+转换,加载,首先是抽取分为全量抽取和增量抽取,因为nifi是做数据路由的,所以这部分它是满足的;其次是清洗转换,字段的映射,则这部分需要定制开发;加载这部分nifi也是可以支持的;ETL的灵活度很大一部分体现在,抽取的条件和过滤策略以及对于字段的清洗转换策略的配置,这部分kettle支持的比较好,如果用nifi来做可能要自己做很多事情。

以后就让我们一起学习nifi这个优秀的开源框架吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值