用户工具


参考:http://blog.itpub.net/29754888/viewspace-1260026/

角色简介

topologies

  • 相当于一个 job。一直运行,直到手动kill

Nimbus

  • 相当于master node,master node上运行一个Nimbus进程,nimbus负责分发代码到急群中,分配任务到每台机器,监控任务失败

Supervisor

  • 相当于worker node,每个worker node 会运行一个后台进程叫Supervisor,Supervisor监听Nimbus的请求,负责分配本机的资源,启动、关闭worker进程。

Worker(集群间调度的最小单位)

  • 每个worker进程执行一个topology拓扑的一个子集,所以一个topology包含了多个worker进程,这些进程分布在集群的每一台机器上
  • 一个worker进程只属于一个topology拓扑
  • 每个worker进程可以执行一个或多个executor

executor

  • 一个executor是worker进程的一个线程,
  • 一个executor负责一个component(spout or bolt)中的一个或多个task

task

  • task是处理逻辑的最小单位
  • 每个component的task个数在整个生命周期中是固定的

Streams

  • Streams是一系列的tuples,最基本的基于Streams的组件是“spouts” and “bolts”

Nimbus和Supervisor之间的协作都是通过zookeeper完成的,Nimbus和Supervisor都是fail-fast和无状态的,所有的状态都保存在zookeeper。也就是说我们可以kill -9 Nimbus 或者 Supervisors,然后重启,都没有什么问题

失败策略

worker dies?

  • 如果worker挂了,supervisor会重启worker进程,如果连续启动都失败了,Nimbus会在其他机器重新分配一个worker

node dies?

  • 所有分配到这台机器的task都会超时,然后Nimbus回重新分配这些任务到其他机器

Nimbus or Supervisor daemons die?

  • Nimbus and Supervisor daemons 被设计成fail-fast (进程自毁,当未意料的情况发生时p) 和 无状态的 (所有的状态都保存在zookeeper,zookeeper会持久化到磁盘).

因此,重启即可,所有的worker进程都不会受到影响 所有Nimbus都挂了

  • worker会继续运行,supervisor继续管理worker进程(失败重启之类的操作)。只是涉及到Nimbus的操作全都不能做(比如重新分配worker)