当前位置: 首页 > 知识库问答 >
问题:

Apache NiFi和StreamSets之间的区别

叶阳
2023-03-14

我正在计划做一个类项目,并且正在研究几种我可以自动化或设置系统间数据流的技术,发现有两种,即Apache、NiFi和StreamSets(据我所知)。我不能理解的是它们和它们可以被使用的用例之间的区别?我是一个新手,如果有人能解释我一点,我会非常感谢。谢谢

共有1个答案

姜弘化
2023-03-14

苏拉杰,

好问题。

我的回应是作为开源Apache NiFi项目管理委员会的成员和对数据流管理领域充满热情的人。

2)数据来源

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

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

Nifi的开箱即用体验提供了非常强大的性能,即使在非常普通的硬件或虚拟环境中也是如此。这是因为flowfile和content repository的设计,它为我们提供了高性能,但在数据通过流工作时需要的事务性语义。flowfile存储库是一个简单的write ahead日志实现,内容存储库提供了一个不可变的版本化内容存储。这反过来意味着我们可以只通过添加一个新指针来“复制”数据(实际上不是复制字节),或者我们可以通过简单地读取原始数据并写出新版本来转换数据。还是很有效率的。再加上我刚才提到的出处,它提供了一个非常强大的平台。这里需要理解的另一个真正关键的事情是,在连接系统的业务中,您并不总是能够指定所涉及的数据大小等内容。NiFi API的构建就是为了尊重这一事实,因此我们的API允许处理器执行接收、转换和发送数据等操作,而不必在内存中加载全部对象。这些存储库还意味着,在大多数流中,大多数处理器甚至根本不接触内容。但是,您可以很容易地从NiFi UI中看到实际读取或写入了多少字节,这样您就可以再次获得在建立和观察流时非常有用的信息。这种设计也意味着NiFi能够支持背压和自然释放压力,这对于数据流管理系统来说是非常关键的特性。

Streamsets公司的人员以前提到过,NiFi是面向文件的。我真的不确定文件、记录、元组、对象或消息之间的区别,但事实是,当数据在流中时,它是“需要管理和交付的东西”。尼菲就是这么做的。不管你有很多非常高速的小东西还是大东西,不管它们是来自互联网上的实时音频流,还是来自硬盘上的文件,这都无关紧要。一旦它在流程中,就该管理和交付它了。尼菲就是这么做的。

Streamsets公司还提到,NiFi是无模式的。NiFi并不强制将数据从原始数据转换为某种特殊的NiFi格式,也不需要将其重新转换为某种格式以便后续交付,这一点是准确的。如果我们这样做将是非常不幸的,因为这意味着即使是最微不足道的情况也会有问题的性能影响,幸运的是NiFi没有这个问题。此外,如果我们走了这条路,那就意味着处理媒体(图像、视频、音频等)等不同的数据集将会很困难,但我们走在正确的轨道上,而NiFi一直都在做这样的事情。

最后,当您继续您的项目,如果您发现有您希望看到改进的东西,或者您希望贡献代码,我们很乐意得到您的帮助。从https://nifi.apache.org中,您可以快速找到关于如何归档票证、提交补丁、发送邮件列表等信息。

这里有几个有趣的NiFi近期项目可供结账:https://www.linkedin.com/pulse/nifi-ocr-using-apache-read-childrens-books-jeremy-dyer https://twitter.com/kaylerch/status/721455415456882689

祝班级项目顺利!如果您有任何问题,请访问users@nifi.apache.org邮件列表。

谢谢乔

 类似资料:
  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • Apache NiFi比StreamSets慢吗? 我在Apache NiFi和StreamSets中创建了一个管道,它从一个Kafka主题接收数据,并将数据转储到另一个Kafka主题中,但StreamSets的速度要比NiFi快得多。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然

  • 问题内容: 我很好奇printStackTrace()和toString()之间的区别是什么。乍一看,他们 似乎 做的完全相同。 码: 问题答案: 不,有重要区别!使用toString,您只有异常的类型和错误消息。使用printStackTrace()可以获得异常的整个堆栈跟踪,这对于调试非常有帮助。 System.out.println(toString())的示例: printStackTra