storm的容错性:工人死亡时数据是否丢失

c0vxltue  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(265)

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

qyuhtwio

qyuhtwio1#

对。存储在中的内部状态 Map<String, Integer> counts = new HashMap<String, Integer>(); 失败时丢失,重新启动后,分配给失败任务的所有字的计数将为零。
如果您想备份状态,您需要使用可靠的分布式后端存储系统在代码中手动执行此操作(这样您可以在恢复后恢复状态—当然也可以在您自己的代码中手动执行此操作),或者您使用trident api,它为有状态处理提供了一些原语:https://storm.apache.org/documentation/trident-state.html

相关问题