Apache storm 重新平衡后,风暴任务状态是否会转移到新的执行者?
这是我在阅读后提出的一个问题: 如果我需要在bolt的内部状态中保存一些信息,例如,在经典的单词计数用例中,将bolt中看到的每个单词的计数保存在hashmap中。执行“rebalance”命令后,可以将服务器的任务移动到另一个执行器,该执行器可能位于另一个JVM甚至另一台机器中。bolt的内部状态(本例中的单词计数hashmap)是否会传输到新环境(instance/JVM/machine)Apache storm 重新平衡后,风暴任务状态是否会转移到新的执行者?,apache-storm,Apache Storm,这是我在阅读后提出的一个问题: 如果我需要在bolt的内部状态中保存一些信息,例如,在经典的单词计数用例中,将bolt中看到的每个单词的计数保存在hashmap中。执行“rebalance”命令后,可以将服务器的任务移动到另一个执行器,该执行器可能位于另一个JVM甚至另一台机器中。bolt的内部状态(本例中的单词计数hashmap)是否会传输到新环境(instance/JVM/machine) 当然,将单词计数hashmap放在Zookeeper这样的中心位置不会有这个问题。但出于性能考虑,有
当然,将单词计数hashmap放在Zookeeper这样的中心位置不会有这个问题。但出于性能考虑,有时我们似乎需要将内容保留在内存中。一旦运行重新平衡,将发生以下情况
在storm中,我们有以下映射 风暴|真实世界
+++++++++++++++++++++
Worker| Java进程
执行器线程
任务|运行对象方法(执行等) 由于storm中的进程(以及机器)之间没有共享内存,所以应用程序中的所有螺栓中都没有共享值,例如计数器。但您可以在一个工作进程的执行器(线程)中共享值。
要处理所有执行器中的共享值,必须使用其他工具,如分布式缓存(Memcached、guava)或数据库。
在暴风雨中,我认为它使用zookeeper在重新平衡后恢复状态