【发布时间】:2013-02-05 15:29:39
【问题描述】:
Storm 是一个免费的开源分布式实时计算系统。它接收数据流并对其进行处理。如果 Storm 出现故障并且部分数据从未通过它,这意味着计算将不同步怎么办?
Storm 如何解决这个问题?如果不能,如何解决这个问题?
类似的问题是:如何读取在添加 Storm 之前存在的旧数据?
【问题讨论】:
标签: bigdata apache-storm
Storm 是一个免费的开源分布式实时计算系统。它接收数据流并对其进行处理。如果 Storm 出现故障并且部分数据从未通过它,这意味着计算将不同步怎么办?
Storm 如何解决这个问题?如果不能,如何解决这个问题?
类似的问题是:如何读取在添加 Storm 之前存在的旧数据?
【问题讨论】:
标签: bigdata apache-storm
如何读取添加 Storm 之前存在的旧数据?
数据必须存储在某个地方(例如 HDFS)。你编写了一个 Spout,它接受来自某些传输(比如 JMS)的数据。然后,您需要编写重放代码以从 HDFS 读取适当的数据,将其放在 JMS 通道上,Storm 会处理它。诀窍是知道您需要在数据中回溯多远,这可能是外部系统的责任,例如重放代码。此重放代码可能会查询数据库,或 Storm 处理的结果,无论它们可能是什么。
总体而言,“如果它出现故障怎么办”问题取决于您正在执行的计算类型以及您的系统是否处理背压。简而言之,流的大部分持久性取决于传递给 Storm 的消息传递/传输机制。
示例:如果您需要简单地转换 (xslt) 单个事件,则不会发生实时故障,并且如果 Storm 发生故障,也不会出现状态问题。您只需启动备份并继续处理。
提供 Feed 的系统可能需要处理背压。像 Kafka 这样的消息传输可以处理持久消息,并允许 Storm 从中断的地方继续。
需要详细说明导致“计算不同步”的特定用例,以提供更好、更具体的答案。
【讨论】: