1

Storm 是一个免费的开源分布式实时计算系统。它接收数据流并对其进行处理。如果 Storm 出现故障并且部分数据从未通过它,这意味着计算将不同步怎么办?

Storm 如何解决这个问题?如果不能,如何解决这个问题?

一个类似的问题是:如何读取在添加 Storm 之前存在的旧数据?

4

1 回答 1

3

如何读取在添加 Storm 之前存在的旧数据?

数据必须存储在某个地方(例如 HDFS)。您编写了一个 Spout,它接受来自某些传输(例如 JMS)的数据。然后,您需要编写重放代码以从 HDFS 读取适当的数据,将其放在 JMS 通道上,Storm 会处理它。诀窍是知道你需要在数据中回溯多远,这可能是外部系统的责任,比如重放代码。这个重放代码可以查询数据库,或者 Storm 的处理结果,不管它们是什么。

总体而言,“如果它下降了怎么办”问题取决于您正在执行哪种类型的计算,以及您的系统是否处理背压。简而言之,流的大部分持久性取决于传递给 Storm 的消息传递/传输机制。

示例:如果您需要简单地转换 (xslt) 单个事件,则不会发生实时故障,并且如果 Storm 发生故障,也不会出现状态问题。您只需启动备份并恢复处理。

提供饲料的系统可能需要处理背压。像Kafka这样的消息传输可以处理持久的消息,并允许 Storm 从中断的地方继续。

需要详细说明导致“计算不同步”的特定用例,以提供更好、更具体的答案。

于 2013-02-05T16:31:28.810 回答