nimbus
是整个集群的控管核心,负责topology的提交、运行状态监控、任务重新分配等工作。
zk就是一个管理者,监控者。
总体描述:nimbus下命令(分配任务),zk监督执行(心跳监控worker、supurvisor的心跳都归它管),supervisor领旨(下载代码),招募人马(创建worker和线程等),worker、executor就给我干活!task就是具体要干的活。
主控节点与工作节点
Storm集群中有两类节点:主控节点(Master Node)和工作节点(Worker Node)。其中,主控节点
只有一个,而工作节点可以有多个。
Nimbus进程与Supervisor进程
主控节点运行一个称为Nimbus的守护进程类似于Hadoop的JobTracker。Nimbus负责在集群中分发代
码,对节点分配任务,并监视主机故障。
每个工作节点运行一个称为Supervisor的守护进程。Supervisor监听其主机上已经分配的主机的作业,
启动和停止Nimbus已经分配的工作进程。
流分组(Stream grouping)
流分组,是拓扑定义中的一部分,为每个Bolt指定应该接收哪个流作为输入。流分组定义了流/元组如何
在Bolt的任务之间进行分发。
Storm内置了8种流分组方式。
工作进程(Worker)
Worker是Spout/Bolt中运行具体处理逻辑的进程。一个worker就是一个进程,进程里面包含一个或多
个线程。
执行器(Executor)
一个线程就是一个executor,一个线程会处理一个或多个任务。
任务(Task)
一个任务就是一个task。
Topology运行
在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapReduce任务相
似。但是有一点不同的是:在Hadoop中,MapReduce任务最终会执行完成后结束;而在Storm中,
Topology任务一旦提交后永远不会结束,除非你显示去停止任务。计算任务Topology是由不同的
Spouts和Bolts,通过数据流(Stream)连接起来的图。一个Storm在集群上运行一个Topology时,主
要通过以下3个实体来完成Topology的执行工作:
(1). Worker(进程)
(2). Executor(线程)Storm hadoop
角色 Nimbus JobTracker
Supervisor TaskTracker
Worker Child
应用名称 Topology Job
编程接口 Spout/Bolt Mapper/Reducer
(3). Task
task是线程执行程序中的“函数”,是用户的业务逻辑,是数据处理的实体单元