Storm的容错能力:工人死亡时数据丢失



我有一个关于容错的问题。考虑字数= 在您给出的拓扑结构中,螺栓"字数统计"可能有许多任务,并且"字段分组"用于确保始终将相同的单词分配给相同的任务。我的问题是,如果某些任务死了怎么办?据我了解,风暴将尝试重新启动这些任务。但是,重新启动时,存储在这些任务中的字数也应该丢失。这是否意味着这些单词将在其他或还原的任务中从 0 开始?

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

如果要备份状态,则需要使用可靠的分布式后端存储系统在代码中手动执行此操作(以便可以在恢复后还原状态---当然也可以在自己的代码中手动还原),或者使用 Trident API,该 API 为有状态处理提供一些原语:https://storm.apache.org/documentation/Trident-state.html

最新更新