Kafka和Nifi之间的区别

时间:2018-11-29 10:18:42

标签: apache-kafka apache-nifi

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

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

3 个答案:

答案 0 :(得分:7)

NiFi和Kafka在某种意义上是互补的,因为NiFi不是像Apache Kafka这样的消息传递队列。相反,Apache NiFi是一种数据流管理(又名数据物流工具)。

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

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

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

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

答案 1 :(得分:3)

作为对先前答案的补充,此处提供了宝贵的资源,非常清楚地说明了如何结合这两种技术,尤其是为什么要结合使用示例性示例。

我发现它非常有价值,每当需要有关该主题的内存刷新时,它都是goto参考。

Kafka / NiFi : Better together

简而言之:

NiFi和Kafka是互补的

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

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

答案 2 :(得分:2)

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)发生在流中的元数据(来源),以进行审核日志记录和故障排除。

  • Apache Kafka is publish-subscribe messaging rethought as a distributed commit log

    这是发布-订阅模式的分布式实现,允许开发人员以不同的语言并跨大量机器将程序彼此连接。它不是用于处理数据的多合一解决方案,它更是分布式计算的构建块。