NIFI源码学习-(六)NIFI与KETTLE区别

kettle和NIFI都是大数据工具,不过前者是CS架构,只能在本地客户端开发好job之后,把包部署出去,后者却能在BS架构下通过浏览器页面随时调整流程。但是这些都是只是表面。

在网上也有对于二者的比较,说的到点的能说到二者对于实时性数据的支持上差异比较大,kettle几乎不支持实时性。本文详细说下这种差异导致的不同使用场景和内部原因。

一、适用场景

kettle:需要通过定时任务的方式,从不同的数据源进行ETL作业。此时数据多是已经产生了的。

NIFI:需要与别的系统通过实时调用服务的方式,将数据传递进来。数据是实时产生的。比如需要通过NIFI启动一个WebService服务,通过NIFI消费Kafa,通过NIFI获取数据库最新的binLog。

对于kettle,一旦进程被杀掉,极端一点,系统突然掉电了,那kettle正在处理的内存中的数据,就会消失,而这对于实时系统来说就是灾难。而NIFI,因为预写日志的存在,重启之后,数据还在,能够继续运行。因此二者的关系应该是:NIFI在前,对接实时的业务系统,Kettle在后,定时处理NIFI接收到的数据。但是NIFI丰富的组件,使得NIFI可以把kettle这部分的工作也给做了,但是实际体验上,效率并没有Kettle高。

二、差异原因

如果有看过前边NIFI调度的文章,就会知道,对于NIFI来说,每个启动的处理器,都是线程池中的一个任务,这个任务会反复检测当前处理器有没有数据需要处理,所以NIFI流程上的处理器在宏观上在同时运行。当后面的处理器出问题,比如数据入库的时候,数据库连接失败,不影响前部接口处理器的运行。接口处理器会把数据放入队列,等数据库回复正常,数据依旧能正常入库。即使在NIFI因为某些原因停掉了,重启后,数据不会丢失。为了实时性,必须要有预写日志的存在。

对于Kettle,job启动之后,数据从前到后地依次被处理,组件运行完成之后,就不再执行了,这种调度的差异导致kettle无法开发一个http Server或者Webservice Server 组件专门用于生成数据供后续组件处理,并且后组件需要及时对数据进行处理。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NiFi是一种基于数据流的可视化工具,可以用来构建数据流处理任务。其中,getfile和putfile是NiFi中常用的两个应用示例。 getfile应用是指通过NiFi获取文件并进行处理的过程。通常情况下,我们会设置getfile应用来定期从指定的文件夹或远程服务器上获取需要处理的文件。例如,我们可以配置getfile应用从一个FTP服务器上获取新上传的CSV文件。获取到文件后,NiFi可以对文件进行一系列的处理操作,如解析、过滤、转换等。最后,处理后的结果可以存储在本地文件系统、Hadoop分布式文件系统(HDFS)或其他存储介质中。 而putfile应用则是将经过NiFi处理的数据写入到文件系统或其他介质中的过程。在数据流处理任务中,putfile应用经常与getfile应用相结合,用于输出处理后的结果。当NiFi对数据进行处理后,我们可以使用putfile应用将结果写入到指定的文件夹或存储系统中。例如,我们可以将处理后的数据写入到本地文件系统或HDFS中,以便后续的分析和使用。 getfile和putfile应用的组合可以实现很多实际场景中的数据集成和处理任务。例如,我们可以使用getfile应用从多个不同位置获取数据文件,然后通过一系列的处理操作,如数据清洗、转换和合并,最后使用putfile应用将结果写入到统一的存储系统中。这样可以方便地实现数据的集成和统一管理,提高数据处理的效率和准确性。 总之,getfile和putfile是NiFi中的两个常用应用示例,它们可以配合使用实现数据的获取、处理和输出,帮助我们构建高效可靠的数据流处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值