数据流整合工具—NIFI

NIFI

1、NIFI历史

        NSA创造了Nifi,并且使用了8年。在2014年将其贡献给了Apache开源社区,2015年的时候成为了顶级项目。是一个用户友好,可扩展且可靠的,专为处理数据流而诞生的,数据处理和分发系统。

2、NIFI特点

用户友好:使用者可以完全通过基于web页面的可视化工具,通过拉拽、链接、配置,完成一个数据处理和分发流程。还可以保存一个通用的数据流处理模板,套用到其它处理流程上。

可扩展:Nifi有两个版本,既可以本地使用,也可以在分布式的集群环境下使用。

可靠:Nifi有保证交付(通过持久化预写日志和内容存储实现),背压缓冲(即上游产生过多数据,下游一时消化不了的话,提供缓冲功能,等待下游消费)两个特点,保证处理过程中的可靠性。

数据处理和分发系统:主要用于连接不同种类,不同格式,来自不同系统的文件,并在合适的处理后将它们分发到它们应该去的地方。

3、NIFI核心组件

        如上图所示,为NiFi架构图。NiFi在安装有JVM的主机系统内运行。NiFi在JVM内运行的主要组件有:

Web Server:承载NiFi基于HTTP的命令和控制API;

Flow Controller:NiFi执行具体操作的大脑,负责从线程资源池中给Processor分配可执行的线程,以及其他资源管理调度的工作;

FlowFile Repository:负责保存在目前活动流中FlowFile的活跃状态,其功能实现是可插拔的。默认的方式是通过一个存储在指定磁盘分区的持久预写日志,来实现此功能。

Content Repository:负责保存在目前活动流中FlowFile的实际字节内容,其功能实现是可插拔的。默认的方式是一种相当简单的机制,即存储内容数据在文件系统中。多个存储路径可以被指定,因此可以将不同的物理路径进行结合,从而避免达到单个物理分区的存储上限。

Provenance Repository:负责保存所有跟踪事件数据,同样此功能是可插拔的,并且默认可以在一个或多个物理分区上进行存储,在每个路径下的事件数据都被索引,并且可被查询。

Nifi也支持用户自定义Processor,例如通过继承NiFi定义的AbstractProcessor类。自定义的Processor可以和内建的Processor一样添加到NiFi定义Flow的GUI上,并对其进行配置。

4、NIFI单机简单实现案例

5、NIFI集群架构

        NiFi Cluster采用无leader模式,即在部署时所有集群节点都是相同的配置没有主节点和从节点的区别。每个节点都有同样的数据流程定义,执行相同的任务,但处理不同的数据。 NiFi使用zooKeeper做为协调服务。集群启动时,一个节点被选出做为协调节点,其他节点向它发送心跳信息和状态报告。当新节点选择加入集群时,新节点必须首先连接到集群协调节点,以下载最新的数据流程。如果集群协调节点确定允许节点加入,则当前数据流程将提供给该节点,并且该节点能够加入集群,但新节点的数据流程副本与集群协调节点提供的副本必须匹配。如果新节点的数据流程配置版本与集群协调节点的版本不同,则新节点将被拒绝加入集群。

5.1、NIFI不同节点数据传输处理能力比较

使用8个processor的情况下的数据传输处理能力比较:

节点数传输能力每五分钟的传入数据
单节点0.18803 GB /秒56.41 GB
5个节点集群0.8814 GB /秒264.42 GB
25个节点集群0.8814 GB /秒1.71 TB

6、NIFI和其它流式框架比较

6.1、STORM

        Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。 storm是以topologies为单位,来运行作业,一个topology是由Spouts(数据的产生源头)、Bolts(处理数据的逻辑)、tuples(传输数据,此数据是封装到tuples对象实现)组成。主要使用在推荐系统(实时推荐,根据下单或加入购物车推荐相关商品)、金融系统、预警系统、网站统计(实时销量、流量统计,如淘宝双11效果图)、交通路况实时系统等等。

6.2、FLINK

        被称为第四代大数据处理。Storm提供了低延迟的流处理,但是为了实时性付出了一些代价,很难实现高吞吐。低延迟和高吞吐流处理系统中维持良好的容错性很困难,但是人们想到了一种替代方法:将连续时间中的流数据分割成一系列微小的批量作业。这就是Spark批处理引擎上运行的Spark Streaming所使用的方法。Flink分别提供了面向流式处理的接口和面向批处理的接口。Flink提供了用于流处理的DataStream API和用于批处理的DataSet API。Flink的分布式特点体现在它能够在成百上千机器上运行,它将大型计算任务分成许多小的部分每个机器执行一部分。Flink 整个系统主要由两个组件组成,分别为 JobManager 和 TaskManager,Flink 架构也遵循 Master - Slave 架构设计原则,JobManager 为 Master 节点,TaskManager 为 Worker (Slave)节点。JobManager 相当于整个集群的 Master 节点,且整个集群有且只有一个活跃的 JobManager ,负责整个集群的任务管理和资源管理。TaskManager 相当于整个集群的 Slave 节点,负责具体的任务执行和对应任务在每个节点上的资源申请和管理。TaskManager 从 JobManager 接收需要部署的任务,然后使用 Slot 资源启动 Task,建立数据接入的网络连接,接收数据并开始数据处理。同时 TaskManager 之间的数据交互都是通过数据流的方式进行的。

7、NIFI、FLINK在数据中台中的使用

参看考资料:

Apache NiFi Documentation

nifi安装包下载地址:

Index of /dist/nifi/1.9.2   默认的端口是8080  默认http访问

1.14及1.15 默认 https访问 , 默认端口 8443 https 访问 需要登录

docker命令在linux服务器上安装nifi,指定端口为9092

docker run --name nifi  -p 9092:9090  -d  -e NIFI_WEB_HTTP_PORT='9090'  apache/nifi:1.13.2

使用说明 本软件用于快速处理大量EXCEL;csv;dbf文件合并、目录链接及数据汇总,帮助您整理文件,方便您的操作。适用于总部管理、统计、办公、财务、个人等处理文件时使用。不影响原文件内容和格式 一、当鼠标停在按钮键上时,会显示出相应的操作说明。每步操作在窗体上都有相应的提示。 二、[合并多个EXCEL;csv;dbf文件]: 1)、当您选择要合并的文件时,请用SHIFT、CTRL键加鼠标或CTRL+A键选择文件。新表名以[原文件名]+[原表名]或[原表名]组成。 2)、新表名长度如超过15个汉字(EXCEL规定不准超过),将自动进行截取,并在前加上数字序号。 3)、合并完文件后,不要关闭EXCEL,接着做第2步操作。 三、[合并文件建立目录及链接]: 1)、自动建立以表名或自定义的标题行建立目录及链接,并在每张表建立返回目录。 四、进行数据合并: 1)、表结构最好保持一致。 2)、进行数据合并时,合并的数据所有A1列不允许为空,为空表示最后一行数据。 3)、需合并的数据所有A1列不允许有合并单元格发生。 4)、详见[合并数据实例.xls]。 注意事项: 1)、当需处理文件数据存在数据链接,请点不更新按钮,或在EXCEL中的工具-选项-编辑将[请求自动更新]去掉。 2)、在合并数据时,当需处理文件数据存在数据链接,在编辑-链接中点[断开链接]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值