Apache nifi apachenifi和streamset之间的差异

Apache nifi apachenifi和streamset之间的差异,apache-nifi,streamsets,Apache Nifi,Streamsets,我计划做一个类项目,并经历了一些技术,在这些技术中,我可以自动或设置系统之间的数据流,并发现有两种技术,即ApacheNIFI和Streamset(据我所知)。我不明白的是它们和可以使用它们的用例之间的区别?我是新手,如果有人能给我解释一下,我将不胜感激。感谢它们在数据摄取场景中非常相似。 ApacheNIFI(HDP)更加成熟,Streamset更加轻量级。 两者都易于使用,都有很强的能力。而且流集可以很容易地 他们背后有Hortonworks和Cloudera公司 显然,在NIFI上工作的贡

我计划做一个类项目,并经历了一些技术,在这些技术中,我可以自动或设置系统之间的数据流,并发现有两种技术,即ApacheNIFI和Streamset(据我所知)。我不明白的是它们和可以使用它们的用例之间的区别?我是新手,如果有人能给我解释一下,我将不胜感激。感谢

它们在数据摄取场景中非常相似。 ApacheNIFI(HDP)更加成熟,Streamset更加轻量级。 两者都易于使用,都有很强的能力。而且流集可以很容易地 他们背后有Hortonworks和Cloudera公司


显然,在NIFI上工作的贡献者比Streamset多,当然,NIFI在生产中有更多的企业部署。

Apache NIFI和Streamset Data Collector都是Apache许可的开源工具

Hortonworks确实有一种商业支持的变体,称为Hortonworks数据流(HDF)

虽然两者有很多相似之处,例如基于web的ui,但它们都用于接收数据,但有一些关键的区别。它们还都由一个连接在一起的处理器组成,以执行转换、序列化等

NiFi处理器是面向文件和无模式的。这意味着一段数据由一个流文件表示(这可能是磁盘上的一个实际文件,或者是从别处获取的一些数据块)。每个处理器负责理解数据的内容,以便对其进行操作。因此,如果一个处理器理解格式A,而另一个处理器只理解格式B,则可能需要在这两个处理器之间执行数据格式转换

NiFi可以独立运行,也可以作为一个集群使用自己的内置集群系统运行

然而,StreamSets数据采集器(SDC)采用基于记录的方法。这意味着,当数据进入管道时(无论是JSON、CSV等),它都会被解析为通用格式,因此理解数据格式的责任不再放在每个处理器上,任何处理器都可以连接到任何其他处理器

SDC也可以独立运行,也可以以集群模式运行,但它可以在Spark on Thread/Mesos上运行,利用现有的集群资源

NiFi已经存在了大约10年(但在开源社区还不到2年)

Streamset于2015年晚些时候发布到开源社区。它与供应商无关,就Hadoop而言,Hortonworks、Cloudera和MapR都是受支持的

充分披露:我是一名在Streamset上工作的工程师。

Suraj

好问题

我的回答是作为开源ApacheNIFI项目管理委员会的成员以及对数据流管理领域充满热情的人

自2006年NiFi项目启动以来,我一直参与其中。我对streamset的了解相对有限,所以我会让他们像以前那样为我说话

要理解的关键是,NiFi是为了做好一件非常重要的事情而构建的,那就是“数据流管理”。它的设计基于一个称为“基于流的编程”的概念,您可能希望阅读该概念并为您的项目提供参考“

已经有许多系统产生数据,如传感器和其他。有许多专注于数据处理的系统,如ApacheStorm、Spark、Flink等。最后,还有许多存储数据的系统,如HDFS、关系数据库等。NiFi纯粹专注于连接这些系统的任务,并提供完成这一任务所需的用户体验和核心功能

哪些关键功能和设计选择使其有效:

1) 交互式指挥与控制

试图连接系统的人的工作是能够快速有效地与他们看到的恒定数据流进行交互。NiFi的UI允许您在数据流动时进行操作,您可以添加功能对其进行操作,提供数据副本以尝试新方法,调整当前设置,查看最近和历史统计数据,有用的在线文档等。相比之下,几乎所有其他系统都有一个面向设计和部署的模型,这意味着您需要进行一系列更改,然后进行部署。该模型很好,可以是直观的,但对于数据流管理工作,它意味着您无法通过更改反馈获得交互式更改,而更改反馈对于快速构建新流或安全高效地纠正或改进现有数据流的处理非常重要

2) 数据来源

NiFi的一个非常独特的功能是它能够生成细粒度和强大的可跟踪性详细信息,这些详细信息包括数据来自何处、对数据做了什么、数据发送到何处以及在流中何时完成。这对于有效的数据流管理非常重要,原因有很多,但是对于处于早期探索阶段和从事项目的人来说,这给您带来的最重要的东西是令人敬畏的调试灵活性。您可以设置您的流并让它运行,然后使用出处来实际证明它确实做了您想要的事情。如果某些事情没有如您预期的那样发生,您可以修复流并重放对象,然后重复。真的很有帮助

3) 专门构建的数据存储库

NiFi的开箱即用体验即使在非常普通的硬件或虚拟环境中也能提供非常强大的性能。这是因为flowfile和content repository的设计为我们提供了数据在流中运行时所需的高性能但事务性的语义。flowfile存储库是一个简单的预写日志实现,内容存储库提供一个不可变版本的内容存储。这反过来意味着我们只能通过添加一个新指针(而不是一个新指针)来“复制”数据