- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我计划做一个类项目,并且正在研究一些可以自动化或设置系统之间数据流的技术,发现有几个技术,即 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/
我在 docker 中运行 NiFi,所有相关目录都安装为卷。我正在尝试修改 nifi.properties 文件中的一些设置,特别是添加自定义属性文件。但是,当我重新启动 NiFi 时,某些属性会恢
我们有多个团队 nifi 应用程序在同一台 nifi 机器上运行...有什么方法可以记录特定于我的应用程序的日志吗?此外,默认情况下 nifi-app.log 文件很难跟踪问题,公告板仅显示 5 分钟
有了这个功能,现在有两个执行引擎---无状态和有状态,但我不确定它们分别适合哪些场景? 当我想方便地更新一个或多个参数时,使用steteless执行引擎和命令行?如果我需要查看流程状态,在Nifi U
这个问题说明了一切。我怎样才能做以下事情之一: 如何限制在集群范围内为一个处理器运行的并发任务数? 我运行的节点是否有任何唯一的短 ID?我可以使用这些 ID 附加到要加载的数据库表名(请参阅下面的详
我在 HDF 2.1.1 的集群模式下使用 NIFI 1.1.0,并且禁用了数据来源,知道如何启用它吗? 在我的独立版本中它是默认启用的。 最佳答案 您的独立实例和集群之间的主要区别在于您的集群是安全
我正在尝试将一个非常简单的多部分表单发布到 api。我在 apache Nifi 中看不到任何这样做的方法,因为它似乎只有一个表单数据输入。在这里和 Nifi 论坛上似乎有很多关于此的现有问题,但没有
随着流程在开发、测试和生产阶段的进展,我们正在努力找出更新处理器配置的最佳方法。当流部署到特定环境时,我们真的希望避免在处理器中操纵主机、端口等引用。至少在我们的例子中,我们将有不同的主机用于 Ela
我对 Nifi 及其功能以及它的适当用例有疑问。 我读过 Nifi 的真正目标是创建一个允许基于流的处理的空间。在玩弄 Nifi 之后,我也开始意识到它能够以对我有用的方式对数据进行建模/塑造。 Ni
我们有多个(50 多个)nifi 流,它们基本上都做同样的事情:从数据库中提取一些数据,将一些列附加到 parquet 并上传到 hdfs。它们仅在细节上有所不同,例如要运行的 sql 查询或它们在
我一直在尝试 google 和搜索堆栈以寻找答案,但一直找不到。 使用 NiFi,是否可以在之前的作业失败时停止进程? 我们有需要处理的用户数据,但数据是按顺序构造的,因此如果作业失败,我们需要停止运
我正在从事一个大量使用 Apache NiFi v1.10.0 的项目。我厌倦了点击数百个流程组来应用基本相同的小修复。 我最近发现了远程进程组,我想知道是否有办法将 NiFi 实例连接到自身并以这种
我使用的是 Nifi 0.4.1 版本。我正在编写自定义代码以将 CSV 转换为 avro 格式。我已经创建了类文件并能够生成 nar 文件。将 nar 文件放在 lib 目录中并重新启动 nifi
我正在尝试重新启动 NiFi 并出现以下异常。 2016-04-22 09:27:30,672 WARN [main] org.apache.nifi.web.server.JettyServer F
根据我在使用 NiFi 构建一些数据库摄取 PoC 后的理解,整个数据流作为流文件流运行。并且在任何特定时间,执行控制可以同时在一个或多个处理器上。 所以我真的很困惑如何针对任何故障调试复杂的数据流。
我想在我的 Nifi 处理器中引用一个环境变量(一个 linux 环境变量)。我尝试通过直接在处理器属性中引用 ${MY_VARIABLE_NAME} 来使用表达式语言。但这似乎不起作用。这可能吗?如
我是 nifi 的新手,我试图了解(因为它看起来很多基于 GUI)是否有一种方法可以在 Nifi 上自动缩放,以及如何使用 xml Nifi 模板并将其部署到集群。 本质上,我们试图做的是使用 Nif
我正在使用 Apache NiFi 来摄取和预处理一些 CSV 文件,但是在长时间运行时,它总是失败。错误总是一样的: FlowFile Repository failed to update 在日志
我正在为我的数据流开发新的 Nifi 处理器。我在 eclipse 中进行代码更改,创建新的 .nar 文件并将其复制到 Nifi lib 以进行测试。 在 nar 更新中,Nifi 需要重新启动,这
在 NiFi 中,存在从 MQTT(ConsumeMQTT)消费并发布到 HDFS 路径(PutHDFS)的数据流。我需要在将消耗的数据推送到 HDFS 路径之前引入 60 分钟的延迟。发现 Cont
我是 apache NIFI 的新手。我有点想知道保存按钮在哪里。我尝试了我在 youtube 上看到的教程中的示例。我想保存我创建的所有处理器以供将来引用。我没有看到任何保存按钮。以后可以保存我的工
我是一名优秀的程序员,十分优秀!