【八斗学院】9.4storm系统是使用什么样架构来支持高速计算的?
- 格式:docx
- 大小:189.75 KB
- 文档页数:2
storm系统是使用什么样架构来支持高速计算的?
来源:八斗学院
1)主节点(Nimbus):
在分布式系统中,调度服务非常重要,它的设计,会直接关系到系统的运行效率,错误恢复(fail over),故障检测(error detection)和水平扩展(scale)的能力。
集群上任务(task)的调度由一个Master节点来负责。
这台机器上运行的Nimbus进程负责任务的调度。
另外一个进程是Storm UI,可以界面上查看集群和所有的拓扑的运行状态。
2)从节点(Supervisor)
Storm集群上有多个从节点,他们从Nimbus上下载拓扑的代码,然后去真正执行。
Slave 上的Supervisor进程是用来监督和管理实际运行业务代码的进程。
在Storm 0.9之后,又多了一个进程Logviewer,可以用Storm UI来查看Slave节点上的log文件。
3)协调服务Zookeeper:
ZooKeeper在Storm上不是用来做消息传输用的,而是用来提供协调服务(coordination service),同时存储拓扑的状态和统计数据。
Supervisor,Nimbus和worker都在ZooKeeper留下约定好的信息。
例如Supervisor 启动时,会在ZooKeeper上注册,Nimbus就可以发现Supervisor;Supervisor在
ZooKeeper上留下心跳信息,Nimbus通过这些心跳信息来对Supervisor进行健康
检测,检测出坏节点
●由于Storm组件(component)的状态信息存储在ZooKeeper上,所以Storm组件就
可以无状态,可以 kill -9来杀死
例如:Supervisors/Nimbus的重启不影响正在运行中的拓扑,因为状态都在
ZooKeeper上,从ZooKeeper上重新加载一下就好了
●用来做心跳
Worker通过ZooKeeper把孩子executor的情况以心跳的形式汇报给Nimbus
Supervisor进程通过ZK把自己的状态也以心跳的形式汇报给Nimbua
●存储最近任务的错误情况(拓扑停止时会删除)
4)进程Worker
运行具体处理组件逻辑的进程,一个Topology可能会在一个或者多个worker里面执行,每个worker是一个物理JVM并且执行整个Topology的一部分
例如:对于并行度是300的topology来说,如果我们使用50个工作进程来执行,那么每个工作进程会处理其中的6个tasks,Storm会尽量均匀的工作分配给所有的worker
5)Task
Worker中的每一个spout/bolt的线程称为一个task,每一个spout和bolt会被当作很多task在整个集群里执行,每一个executor对应到一个线程,在这个线程上运行多个task,Stream Grouping则是定义怎么从一堆task发射tuple到另外一堆task,可以调用TopologyBuilder类的setSpout和setBolt来设置并行度(也就是有多少个task)。