【发布时间】:2017-05-28 12:48:35
【问题描述】:
我正在尝试在我们的系统中扩展一个组件,并思考在 Storm(Trident) 和 Spark 之间应该有什么更好的方式。
所以,我们有 2 个大型集合,其中可以包含存储在 redis cluster 中的多达百万个事件。说 S1 和 S2。
现在,我们从消息队列 (Kafka) 中读取一条消息,需要找到同时存在于 S1 和 S2 中的所有元素(基本上找到 **S1∩S2 )。现在对于小型集合,Redis 本身可以有效地进行交集,但我们预计这些集合的大小可以达到百万。**
为了解决上述问题,我们正在探索一些分布式计算框架(即 Storm 和 Spark)。
我对 Storm 的基本 Spout 和 Bolts 有一点经验,我认为它无法在这里有效地工作,因为我们必须在其中一个 bolt 内编写交集的逻辑。探索三叉戟是否有用,但在我看来它可能不够用。
另一方面,Spark 在其核心提供 RDD,它提供开箱即用的并行处理,如交集、联合等操作,我的猜测是我们从消息队列中读取消息并将任务提交给spark集群将从redis中读取并有效地计算S1∩S2。所以,我认为Spark非常适合我们的用例。 如果 Storm 和 Spark 都可以提供帮助,我会倾向于使用 Storm。
这里有人可以提供一些观点吗?
【问题讨论】:
标签: apache-spark redis apache-storm