Spark或风暴(三叉戟)

brccelvz  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(340)

我正在尝试扩展我们系统中的一个组件,并思考在storm(三叉戟)和spark之间应该有什么更好的方法。
所以,我们有两个大的集合,可以包含多达百万的事件存储在redis集群中。说s1和s2。
现在,我们从消息队列(kafka)读取一条消息,需要找到s1和s2中存在的所有元素(基本上是finds1)∩s2)。现在对于小集合,redis本身可以有效地进行交集,但是我们预计这些集合的大小可以是百万
为了解决上述问题,我们正在探索一些分布式计算框架(即storm和spark)。
我有一点经验,基本喷口和螺栓与风暴,并认为它将无法在这里有效地工作,因为我们将不得不写在我们的螺栓内的交叉逻辑之一。探索三叉戟是否可以有些用处,但在我看来,它可能无法提供足够的。
另一方面,spark在其核心提供了rdd,它提供了诸如交叉、并集之类的操作,以便在开箱即用的情况下并行处理,我猜我们从消息队列中读取一条消息,并向spark cluster提交一个任务,spark cluster将从redis中读取并计算s1∩所以,我认为spark很适合我们的用例。如果风暴和Spark都能帮助我,我会倾向于使用风暴。
这里有人能提供一些观点吗。

slmsl1lt

slmsl1lt1#

免责声明:我是flink and storm的提交人,在confluent担任软件工程师,专注于Kafka流。
我不熟悉spark的细节,但是“intersect”听起来像一个批处理操作符——所以我不确定它是否在spark streaming中可用——您应该仔细检查这个(我假设您在比较spark和storm时希望使用spark streaming)。如果您想进行批处理,那么使用spark并利用“intersect”操作符听起来是合理的。
在流处理中执行“intersect”不同于批处理。但是,它基本上是一个连接操作,实现起来应该不难(只要系统提供了一个合适的连接操作符)。
正如您提到的,您将使用来自kafka的消息,可能值得尝试kafka流,kafka的流处理库。因此,您不需要运行其他系统。kafka streams提供了丰富的dsl,包括滑动窗口连接。
如果您想使用流处理框架,我宁愿使用flink that(imho)而不是storm(或spark)。
另请参阅confluent的kafka streams文档,该文档比apache kafka的kafka streams文档更详细:http://docs.confluent.io/current/streams/index.html

相关问题