我有个关于容错的问题。考虑到您给定的word count=ing拓扑,bolt“wordcount”可能有许多任务,而“fieldsgrouping”用于确保始终将相同的单词分配给相同的任务。我的问题是,如果一些任务死了怎么办?据我所知,storm将尝试重新启动这些任务。但是重新启动时,存储在这些任务中的字数也应该丢失。这是否意味着在其他任务或恢复的任务中这些词将从0开始?
qyuhtwio1#
对。存储在中的内部状态 Map<String, Integer> counts = new HashMap<String, Integer>(); 失败时丢失,重新启动后,分配给失败任务的所有字的计数将为零。如果您想备份状态,您需要使用可靠的分布式后端存储系统在代码中手动执行此操作(这样您可以在恢复后恢复状态—当然也可以在您自己的代码中手动执行此操作),或者您使用trident api,它为有状态处理提供了一些原语:https://storm.apache.org/documentation/trident-state.html
Map<String, Integer> counts = new HashMap<String, Integer>();
1条答案
按热度按时间qyuhtwio1#
对。存储在中的内部状态
Map<String, Integer> counts = new HashMap<String, Integer>();
失败时丢失,重新启动后,分配给失败任务的所有字的计数将为零。如果您想备份状态,您需要使用可靠的分布式后端存储系统在代码中手动执行此操作(这样您可以在恢复后恢复状态—当然也可以在您自己的代码中手动执行此操作),或者您使用trident api,它为有状态处理提供了一些原语:https://storm.apache.org/documentation/trident-state.html