【发布时间】:2018-11-29 10:18:42
【问题描述】:
我是 Apache NiFi 的初学者,但到目前为止,我阅读的所有教程都在谈论 kafka 与 Nifi 的集成。 kafka 是如何与 Nifi 互补的?为什么我们不直接使用 Nifi 来发布我们的消息而不使用 kafka?
注意:我看到的所有教程都没有谈到这一点。
【问题讨论】:
我是 Apache NiFi 的初学者,但到目前为止,我阅读的所有教程都在谈论 kafka 与 Nifi 的集成。 kafka 是如何与 Nifi 互补的?为什么我们不直接使用 Nifi 来发布我们的消息而不使用 kafka?
注意:我看到的所有教程都没有谈到这一点。
【问题讨论】:
NiFi 和 Kafka 在 NiFi 不是像 Apache Kafka 那样的消息传递队列的意义上是互补的。相反,Apache NiFi 是一种数据流管理,也就是数据物流工具。
让我们假设这种情况:您有消息(JSON 格式)通过 Kafka 进行流式传输,并且您想要验证消息以检查消息是否包含所有字段,如果它们有效,您希望消息到达 HBase .
这里 NiFi 可以通过以下方法帮助您:
ConsumeKafka 处理器,您可以使用 Kafka 代理和组名称进行配置。ValidateRecord检查收到的消息是否全部有效PutHBaseRecord
总而言之,NiFi 基本上可以防止您编写大量样板代码。在这种情况下,一个自定义逻辑来进行模式验证和写入 HBase。
【讨论】:
在Horthonworks community questions找到一个有趣的答案,为了完整起见,我在这里分享:
Apache NiFi 和 Apache Kafka 是两个不同的工具,具有不同的用例,可能略有重叠。以下是我对这两个项目目的的理解。
NiFi 是“An easy to use, powerful, and reliable system to process and distribute data.”
它是一个可视化工具(带有 REST api),它实现了flow-based programming,使用户能够制作从各种不同来源获取数据的流程,在数据上执行丰富、路由等处理,并将结果输出到各种目的地。在此过程中,它会捕获有关每条数据 (FlowFile) 在通过 Flow 时发生的情况的元数据(来源),以用于审计日志记录和故障排除。
“Apache Kafka is publish-subscribe messaging rethought as a distributed commit log”
它是发布-订阅模式的分布式实现,允许开发人员使用不同的语言和跨大量机器将程序相互连接。它更像是分布式计算的构建块,而不是处理数据的一体化解决方案。
【讨论】:
作为对前面答案的补充,这里有一个宝贵的资源,非常清楚地解释了如何结合这两种技术,尤其是为什么要这样做,并附有插图示例。
我发现它非常有价值,每当我需要对此主题进行记忆复习时,它都是一个 goto 参考。
Kafka / NiFi : Better together
简而言之:
NiFi 和 Kafka 是互补的
NiFi
• 提供数据流解决方案
• 从边缘到核心的集中管理
• 出色的可追溯性,从数据诞生时开始的事件级数据出处
• 交互式命令和控制
• 实时运营可见性
• 数据流管理,包括优先级、背压和边缘智能
• 全局数据流的可视化表示
卡夫卡
• 提供持久的流存储
• 低延迟
• 分布式数据持久性
• 生产者和消费者的分散管理
• 还有很多很多...
【讨论】: