一、JStorm简述
JStorm在使用自带的集群管理中,主要包括Nimbus、Zookeeper、Supervisor、Worker四部分,其中Nimbus作为调度器,其功能主要为调度管理
topology,通过Zookeeper这一协调器,实时监测Supervisor发送过来的心跳包,当Supervisor出错时,Nimbus可以将故障节点上运行的task重新分配到其他正常节点上,实现JStorm集群较高的容错性。Supervisor管理节点上的workers,当某个worker出错时,Supervisor可以将该worker上运行的tasks,调度到其他worker上运行。Worker是Supervisor上运行的进程,一个Worker上面可运行多个task,每个Worker与节点的Port相对应。Zookeeper上存储了每个topology的信息、代码以及JStorm的的一些配置信息。Nimbus通过Zookeeper获得每个worker的心跳包,以及每个节点的信息,Supervisor通过Zookeeper获得每个Topology的信息,以及需要节点运行的task信息和代码。
由此可见,通过Zookeeper这一中间组件,Nimbus和Supervisor实现了信息共
享,同时也避免了单点故障的出现,Supervisor挂掉,Nimbus可以将该节点上的tasks调度到其他节点上运行,即使Nimbus出现问题,由于Supervisor仍然可以从Zookeeper上得到相关信息,因此JStorm依然可以正常运行。实践证明,JStorm集群中运行的Topology有着极高的容错性和稳定性,即使出现节点宕机故障,可自动实现调度,将故障节点的task自动调度到其他正常节点。同时JStorm在实时分析中,实时性高,数据吞吐量大,集群部署简单,Topology开发简单快速,是一个值得推荐和使用的实时分析/流式计算引擎。
二、JStorm源码阅读系列
在进行一段JStorm的实时分析程序开发后,对于在JStorm的编程架构上进行程
序开发已经较为熟练,但对于JStorm内部的运行机制,对应Nimbus、Zookeeper和Supervisor在JStorm所扮演的角色仍然没有较为深刻的理解,所以也就产生了阅读JStorm源码的年头,通过深入阅读源码,我相信一定能够加深对JStorm的理解,同时也为今后进行实时计算平台的开发打下基础。
《JStorm源码阅读系列1——Nimbus启动流程》
《JStorm源码阅读系列2——Supervisor启动流程》
《JStorm源码阅读系列3——TopologyBuilder分析》
《JStorm源码阅读系列4——SubmitTopology分析》