Apache storm 风暴';s容错:工人死亡时数据是否丢失

Apache storm 风暴';s容错:工人死亡时数据是否丢失,apache-storm,fault-tolerance,Apache Storm,Fault Tolerance,我有一个关于容错的问题。考虑字数= 在您给定的拓扑结构中,bolt“WordCount”可能有许多任务,“fieldsGroup”用于确保始终将相同的单词分配给相同的任务。 我的问题是,如果一些任务死了怎么办?据我所知,storm将尝试重新启动这些任务。但是重新启动时,存储在这些任务中的字数也会丢失。这是否意味着在其他任务或恢复的任务中,这些单词将从0开始?是。存储在Map counts=new HashMap()中的内部状态在失败时丢失,重新启动后,分配给失败任务的所有字的计数将在重新启动后为

我有一个关于容错的问题。考虑字数= 在您给定的拓扑结构中,bolt“WordCount”可能有许多任务,“fieldsGroup”用于确保始终将相同的单词分配给相同的任务。
我的问题是,如果一些任务死了怎么办?据我所知,storm将尝试重新启动这些任务。但是重新启动时,存储在这些任务中的字数也会丢失。这是否意味着在其他任务或恢复的任务中,这些单词将从0开始?

是。存储在
Map counts=new HashMap()中的内部状态在失败时丢失,重新启动后,分配给失败任务的所有字的计数将在重新启动后为零


如果要备份状态,您需要在代码中使用可靠的分布式后端存储系统手动执行备份(这样您可以在恢复后恢复状态,当然也可以在自己的代码中手动执行),或者您可以使用Trident API,它为有状态处理提供了一些原语:

我想我还可以将所有数据存储在数据库中而不是内存中。我可以直接更新数据库,而不是更新HashMap。据我所知,这也是三叉戟的功能,对吗?对。这就是我所说的“可靠存储”。