风暴实时处理:如果它发生故障怎么办?

时间:2013-02-05 15:29:40

标签: bigdata apache-storm

Storm是一个免费的开源分布式实时计算系统。它接收数据流并对其进行处理。如果Storm发生故障并且部分数据从未通过它会导致计算不同步怎么办?

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

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

1 个答案:

答案 0 :(得分:3)

  

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

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

总的来说,“如果它失败了”问题取决于你正在做什么类型的计算,以及你的系统是否处理背压。简而言之,流的大部分持久性取决于传递给Storm的消息传递/传输机制。

示例:如果您需要简单地转换(xslt)单个事件,那么就没有实时故障,并且如果Storm发生故障也不会出现状态问题。您只需开始备份并继续处理。

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

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