Storm Trident 和 Spark Streaming:分布式批处理锁定
Posted
技术标签:
【中文标题】Storm Trident 和 Spark Streaming:分布式批处理锁定【英文标题】:Storm Trident and Spark Streaming: distributed batch locking 【发布时间】:2015-02-12 11:25:22 【问题描述】:在大量阅读和构建 POC 之后,我们仍然不确定 Storm Trident 或 Spark Streaming 是否可以处理我们的用例:
我们拥有数百万台设备(具有唯一标识符)的入站传感器数据流。 我们需要在每个设备级别上执行此流的聚合。聚合将读取之前批次中已经处理(和持久化)的数据。 关键点:当我们处理特定设备的数据时,我们需要确保没有其他进程正在处理该特定设备的数据。这是因为我们处理的结果会影响该设备的下游处理。实际上,我们需要一个分布式锁。 此外,事件设备数据需要按照事件发生的顺序进行处理。基本上我们不能同时处理同一设备的两个批次。
trident/spark 流可以处理我们的用例吗?
任何建议表示赞赏。
【问题讨论】:
@Matthias J. Sax:你自己得到答案了吗?如果是,您选择了 Trident 或 Spark Streaming 中的哪一个?为什么? 我没有问这个问题... 您可以通过哈希函数将数据分派到不同的分区,使相同设备的数据在同一个进程中。 【参考方案1】:既然你有唯一的 id,你能把它们分开吗?例如,只需将 id 除以 10,然后根据余数将它们发送到不同的处理框?这还应注意确保按顺序处理每个设备的事件,因为它们将被发送到同一个盒子。我相信 Storm/Trident 可以让你保证按顺序处理。不确定 Spark,但如果他们不知道,我会感到惊讶。
我不得不说,这是一个非常棒的问题要解决。
【讨论】:
以上是关于Storm Trident 和 Spark Streaming:分布式批处理锁定的主要内容,如果未能解决你的问题,请参考以下文章