我对容错有疑问。考虑单词count = 你给出的拓扑结构,螺栓" WordCount"可能有很多任务," fieldsGrouping"用于确保始终将相同的单词分配给同一任务。 我的问题是,如果某些任务死了怎么办?根据我的理解,风暴将尝试重启这些任务。但是重新启动时,存储在这些任务中的字数也应该丢失。是否意味着这些单词将在其他或恢复的任务中从0开始?
答案 0 :(得分:0)
是。存储在Map<String, Integer> counts = new HashMap<String, Integer>();
中的内部状态在失败时丢失,重新启动后,分配给失败任务的所有单词的计数在重新启动后将为零。
如果要备份状态,则需要使用可靠的分布式后端存储系统在代码中手动执行此操作(这样您可以在恢复后恢复状态 - 当然也可以在您自己的代码中手动恢复)或者您使用Trident API为有状态处理提供一些原语:https://storm.apache.org/documentation/Trident-state.html