我是Apache NiFi的初学者,但到目前为止,我阅读的所有教程都谈到了kafka与Nifi的集成。卡夫卡是Nifi的补充吗?为什么在不使用kafka的情况下我们不直接使用Nifi来发布消息?
注意:我看到的所有教程都没有谈到这一点。
答案 0 :(得分:7)
NiFi和Kafka在某种意义上是互补的,因为NiFi不是像Apache Kafka这样的消息传递队列。相反,Apache NiFi是一种数据流管理(又名数据物流工具)。
让我们假设这种情况:您有通过Kafka流式传输的消息(JSON格式),并且您想验证消息以检查消息是否具有所有字段,并且它们是否有效,您希望消息进入HBase。
NiFi可以通过以下方法为您提供帮助:
ConsumeKafka
个处理器,您可以使用您的Kafka代理和组名进行配置。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 ”
这是发布-订阅模式的分布式实现,允许开发人员以不同的语言并跨大量机器将程序彼此连接。它不是用于处理数据的多合一解决方案,它更是分布式计算的构建块。