gpt4 book ai didi

apache-nifi - Apache NiFi 和 StreamSet 的区别

转载 作者:行者123 更新时间:2023-12-02 00:13:26 28 4
gpt4 key购买 nike

我计划做一个类项目,并且正在研究一些可以自动化或设置系统之间数据流的技术,发现有几个技术,即 Apache NiFi 和 StreamSets(据我所知)。我无法理解的是它们与可以使用它们的用例之间的区别?我对此很陌生,如果有人能向我解释一下,将不胜感激。谢谢

最佳答案

苏拉,

很好的问题。

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

我从 2006 年开始参与 NiFi 项目。我对 Streamsets 的了解相对有限,所以我会让他们像他们一样发言。

需要理解的关键是,NiFi 旨在很好地完成一件非常重要的事情,那就是“数据流管理”。它的设计基于名为 Flow Based Programming 的概念,您可能希望阅读该概念并为您的项目“https://en.wikipedia.org/wiki/Flow-based_programming”提供引用

已经有许多系统可以产生数据,例如传感器等。有许多系统专注于数据处理,如 Apache Storm、Spark、Flink 等。最后还有许多系统可以存储数据,如 HDFS、关系数据库等。 NiFi 纯粹专注于连接这些系统的任务,并提供做好这些工作所需的用户体验和核心功能。

为使其有效而做出的一些关键功能和设计选择是什么:

1) 交互式指挥与控制

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

2) 数据来源

NiFi 的一个非常独特的功能是它能够生成细粒度和强大的可追溯性详细信息,说明数据来自何处、对它做了什么、发送到哪里以及何时在流中完成。出于多种原因,这对于有效的数据流管理至关重要,但对于处于早期探索阶段和工作项目的人来说,这为您提供的最重要的事情是令人敬畏的调试灵活性。您可以设置流程并让事情运行,然后使用出处来实际证明它完全符合您的要求。如果某些事情没有按照您的预期发生,您可以修复流程并重放对象,然后重复。真的很有帮助。

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

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

之前 Streamsets 公司的人提到 NiFi 是面向文件的。我不太确定文件、记录、元组、对象或消息之间的区别是什么,但现实是当数据在流中时,它是“需要管理和发表'。这就是 NiFi 所做的。无论您有很多真正高速的小东西还是大东西,无论它们来自互联网上的实时音频流还是来自硬盘驱动器上的文件,这都无关紧要。一旦它进入流程,就该管理和交付它了。这就是 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 邮件列表很乐意提供帮助。

谢谢

关于apache-nifi - Apache NiFi 和 StreamSet 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899612/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com