Kafka和Nifi之间的区别

BER*_*ine 7 apache-kafka apache-nifi

我是Apache NiFi的初学者,但是直到现在,我阅读的所有教程都谈到了kafka与Nifi的集成。卡夫卡是Nifi的补充吗?为什么在不使用kafka的情况下我们不直接使用Nifi来发布消息?

注意:我看到的所有教程都没有谈到这一点。

Siv*_*man 13

NiFi和Kafka在某种意义上是对NiFi而非Apache Kafka的消息传递队列的补充。相反,Apache NiFi是一种数据流管理(又名数据物流工具)。

让我们假设这种情况:您有消息(以JSON格式)通过Kafka进行流传输,并且您想要验证消息以检查消息是否具有所有字段,并且它们是否有效,您希望消息进入HBase。

NiFi可以通过以下方法为您提供帮助:

  • NiFi具有ConsumeKafka处理器,您可以使用Kafka代理和组名进行配置。
  • 使用NiFi处理器ValidateRecord检查收到的消息是否全部有效
  • 如果它们有效,则可以将输出连接到 PutHBaseRecord

总而言之,NiFi基本上可以防止您编写大量样板代码。在这种情况下,需要使用自定义逻辑来进行模式验证和写入HBase。

  • NiFi的队列和存储库非常适合NiFi的需求,因此我不确定是否有可能 (4认同)

Fra*_*ois 7

Horthonworks 社区问题上找到了一个有趣的答案,为了完整起见,我在这里分享:

  • Apache NiFi 和 Apache Kafka 是两种不同的工具,它们的用例可能略有重叠。以上是我对这两个项目目的的理解。

    NiFi 是“一个易于使用、功能强大且可靠的系统来处理和分发数据。

    它是一个可视化工具(带有 REST api),它实现了基于流的编程,使用户能够制作流,这些流将从各种不同的来源获取数据,在处理数据时对数据执行丰富、路由等,并将结果输出到各种目的地。在此过程中,它捕获有关每条数据 (FlowFile) 发生的情况的元数据(出处),因为它通过 Flow 进行审计日志记录和故障排除。

  • Apache Kafka 将发布订阅消息重新考虑为分布式提交日志

    它是发布-订阅模式的分布式实现,允许开发人员使用不同的语言在大量机器上相互连接程序。它更像是分布式计算的构建块,而不是处理数据的多合一解决方案。


Meh*_*ANI 5

作为对先前答案的补充,这里有一个宝贵的资源,通过插图示例非常清楚地解释了如何结合这两种技术,尤其是为什么要这样做。

我发现它非常有价值,每当我需要关于这个主题的记忆复习时,它都是一个转到参考。

Kafka / NiFi : 更好的在一起

简而言之 :

NiFi 和 Kafka 是互补的

NiFi
• 提供数据流解决方案
• 从边缘到核心的集中管理
• 良好的可追溯性,从数据诞生时开始的事件级数据来源
• 交互式命令和控制
• 实时操作可见性
• 数据流管理,包括优先级、背压和边缘智能
•全局数据流的可视化表示

Kafka
• 提供持久的流存储
• 低延迟
• 分布式数据持久性
• 生产者和消费者的分散管理
• 还有更多……