Storm原理

Nimbus
  –集群管理
  –调度topology
Supervisor
  –启停worker
Worker
  –一个JVM进程资源分配的单位
  –启动executor
Executor
  –实际干活的线程

Zookeeper

  - 存储状态信息,调度信息,心跳信息等
Nimbus:相当于master,storm是master/slave的架构
  –它负责两个事情,第一个负责管理集群,这些slave都向zookeeper写信息,然后nimbus通过zk获取这些slave节点的信息,这样nimbus就知道集群里面有多少个节点,节点处于什么样的状态,都运行着什么样的任务
  –第二就是调度topology,当一个topology通过接口提交到集群上面之后,负责把topology里面的worker分配到supervisor上面去执行
Supervisor:每台机器会起一个supervisor进程,supervisor就是slave
  –supervisor其实就干一件事情,就是启停worker,当nimbus调用之后,supervisor去把worker启动起来,这样的话worker就可以开始干活了。

Worker:实际干活的是worker,每个机器上面supervisor会启动很多个worker,每个机器会配置一定的worker,比如4个worker
  –一个worker,其实就是一个JVM,JVM做什么事情,其实就干两件事情,第一件事情就是启动executor,第二件事情它负责worker与worker之间,比如这里还有worker,这里还有worker,负责同一个topolopy中worker和worker之间的传输,task这些数据传输是通过worker来做的,topology和topology之间是没有任何相关性的。
Executor:真正干活的是worker里面的executor
  –worker启动executor,那executor做什么事情,executor就是执行我们的Spout、Bolt里面的nextTuple()、execute()这些回调函数的,是真正运行的线程。


先来看看zookeeper。

zookeeper是nimbus和supervisor把里面读写一些原数据信息的,具体会写什么信息呢?

存储心跳,会把心跳写上去,具体读取心跳信息的人再去zookeeper上面去读取信息;

调度信息错误信息,当task执行错误的时候,把错误的信息写到zookeeper上去,这样的话,在webUI上我们就可以读取这些信息,把情况给展示出来。
实际上,Storm用Zookeeper,使用的非常简单,它就把它当做一个高可用的KV来使用,storm使用zookeeper需求非常简单,就是说让整个集群别变成无状态的,就是任何节点挂了,受影响都不大,包括nimbus这种master进程挂掉的话,整个集群都还是能工作的,它要做到这一点就需要把状态信息元数据都存储到一个KV里面去,存储到一个系统里面去,最简单的就是一个KV就解决了,之所以选用zookeeper,是因为它是一个分布式的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值