Apache Kafka与Apache Storm


102

Apache Kafka:分布式消息传递系统
Apache Storm:实时消息处理

我们如何在实时数据管道中使用这两种技术来处理事件数据?

在实时数据管道方面,在我看来,两者的工作完全相同。我们如何在数据管道上同时使用这两种技术?

Answers:


158

您将Apache Kafka用作可处理大量数据的分布式健壮队列,并使您能够将消息从一个端点传递到另一个端点。

风暴不是队列。这是一个具有分布式实时处理能力的系统,这意味着您可以并行对实时数据执行所有类型的操作。

这些工具(据我所知)的通用流程如下:

实时系统->卡夫卡->风暴-> NoSql-> BI(可选)

因此,您可以使用实时应用程序处理大量数据,并将其发送到Kafka队列。Storm从kafka提取数据并应用一些必需的操作。在这一点上,您通常希望从此数据中获得一些好处,因此您可以将其发送到Nosql数据库以进行其他BI计算,或者可以从任何其他系统中查询此NoSql。


谢谢福哈斯。这非常有帮助。我们可以使用Apache Kafka聚集Apache日志文件吗?还是我们需要Flume来做到这一点?
Ananth Duari 2014年

我猜您可以,尽管我对这样的流程不熟悉。也许您可以检查Splunk是否满足您的需求(只是一个猜测)。
forhas 2014年

我建议使用GrayLog并将其连接到apache kafka。GrayLog已经有一个kakfa输入插件。
saeid rastak '17

36

Kafka和Storm的用途略有不同:

Kafka是一个分布式消息代理,可以每秒处理大量消息。它使用发布-订阅范例,并依赖主题和分区。Kafka使用Zookeeper在代理之间共享和保存状态。因此,Kafka基本上负责将消息从一台计算机传输到另一台计算机。

Storm是一个可扩展的,容错的实时分析系统(像Hadoop一样实时)。它使用来自源(喷口)的数据,并将其传递到管道(螺栓)。您可以将它们组合在拓扑中。因此,Storm基本上是一个计算单元(聚合,机器学习)。


但是,您可以将它们一起使用:例如,您的应用程序使用kafka将数据发送到其他服务器,这些服务器使用Storm对其进行计算。


32

我知道这是一个较旧的线程,Apache Kafka和Storm的比较在编写时是有效和正确的,但值得注意的是,Apache Kafka多年来已经发展了很多,并且自0.10版(2016年4月)以来,Kafka包括了Kafka Streams API,可提供流处理功能,而无需任何其他软件(例如Storm)。Kafka还包括用于连接到各种数据源和数据宿(目的地)的Connect API。

公告博客-https: //www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

当前的Apache文档-https://kafka.apache.org/documentation/streams/

在0.11 Kafka中,流处理功能被进一步扩展以提供“精确一次语义和事务”。

https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/


1
因此,基本上,现在实时系统可以直接与Kafkaas端点进行通信,并且Kafka商店可以与数据库通信?
问题人员

2
是的,现在,Kafka包括Kafka Connect,可以与数据库和其他数据源(syslog,JMS,日志文件等)进行对话,而Kafka Streams可以进行流处理(联接,转换,过滤器,聚合),并返回Kafka Connect进行编写移到另一个数据库或存储库。
汉斯·耶斯珀森

15

这是这样的

Kafka-提供实时流

风暴 -在该流上执行一些操作

您可以看一下GitHub项目https://github.com/abhishekgoel137/kafka-nodejs-d3js

(D3js是一个图形表示库)

理想情况:

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

该存储库基于:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js

1
Abhishek,以上答案中提到的链接已断开。您能否更新链接?
Abhijit Gaikwad 2015年

4

正如每个人向您解释的那样,Apache Kafka:是连续消息队列

Apache Storm:是连续处理工具

在这方面,Kafka将使用API​​从任何网站(如FB,Twitter)获取数据,并且使用Apache Storm处理该数据,您可以将处理后的数据存储在您喜欢的任何数据库中。

https://github.com/miguno/kafka-storm-starter

只要遵循它,您就会知道


3

当我有一个用例,需要我在继续处理事件的同时可视化或警告模式(想到Twitter趋势)时,我有几种模式。
NiFi可以让我处理事件并以很少的自定义编码以较低的批处理聚合更新持久性数据存储。
风暴(许多自定义编码)使我几乎实时地访问趋势事件。
如果我可以等待很多秒钟,那么我可以将批处理从kafka中取出,放入hdfs(Parquet)中并进行处理。
如果我需要在几秒钟内知道,我需要NiFi,甚至可能需要Storm。(想监视成千上万的地球站,在那儿我需要查看小区域的天气状况以获取龙卷风警告)。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.