Topology与mapreduce
mapreduce job最终会结束,而一个topology永远会运行(除非手动kill掉)
这里kill nimbus或者kill supervisor,都不是使任务停止,kill nimbus只是无法再接收新的spout,但是原来的程序会一直运行。kill supervisor只会使当前supervisor上运行的worker受影响,其他的worker仍会正常运行
nimbus和JobTracker(新版是ResourceManager)
在storm的集群中有两种节点:控制节点(master node)和工作节点(worker node)。控制节点上面运行一个nimbus后台程序,它的作用类似Hadoop里面的JobTracker。nimbus负责在系群里面分发代码,分配计算任务给机器,并且监控状态。
Supervisor(worker进程)和TackTracker(新版是NodeManager(YarnChild))
storm集群中,每一个工作节点上面运行一个叫做supervisor的节点。supervisor会监听分配给它的那台机器的工作,根据需要启动/关闭工作进程。每一个工作进程执行以恶搞topology的一个子集。一个运行的topology由运行在很多机器上的很多工作进程组成。
nimbushe supervisor进程都是快速失败(fail-fast)和无状态的。所有的状态姚敏在Zookeeper里面,要么在本地磁盘上。当你使用kill -9来杀死nimbus和supervisor进程,然后再重启他们,就好像什么都没有发生过。这种设计使得storm异常的稳定。