Storm的组件介绍

  组件主要有:topology, spout, bolt, tuple, stream, streams grouping
  集群中的组件有:nimbus, supervisor

  topology:拓扑,也俗称一个任务。
  spout:拓扑的消息源
  bolt:拓扑的处理逻辑单元
  tuple:消息元组
  stream:流
  stream grouping:流的分组策略
  task:任务处理单元
  executor:工作线程
  worker:工作进程
  configuration:topology的配置

  集群主要包括两个角色:supervisor和一个nimbus组建集群管理。逻辑图如下:


  nimbus守护进程的主要职责是管理,协调和监控在集群上运行的topology。包括topology的发布,任务指派,事件处理失败时重新指派任务。
  前面提到过,严格意义上讲nimbus不会引起单点故障。这个特性是因为nimbus并不参与topology的数据处理过程,它仅仅是管理topology的初始化,任务分布和进行监控。实际上,如果nimbus守护进程在topology运行时停止了,只要分配的supervisor和worker健康运行,topology会一直继续数据处理。但是如果在nimbus已经停止的情况下supervisor异常终止,因为没有nimbus守护进程来重新指派失败这个终止的supervisor的任务,数据处理就会失败。
  supervisor守护进程等待nimbus分配任务后生成并监控workers(JVM进程)执行任务。supervisor和worker都是运行在不同的JVM进程上,如果由supervisor拉起的一个worker进程因为错误(或者因为Unix终端的kill -9命令,Window的tskkill命令强制结束)异常退出,supervisor守护进程会尝试重新生成新的worker进程。


  如下所示:storm中的每个节点为supervisor,每个supervisor会开启一个或者多个worker进程(可以配置),每个work进程会启动多个executor线程,每个线程启动多个task实例,每个实例为一个bolt的逻辑运算,但是每一个executor开启的多个task实例必须为同一个bolt实例。一个task可以简单地理解为在集群某节点上运行的一个spout或者bolt实例。

猜你喜欢

转载自my.oschina.net/134596/blog/1798038