Storm集群中的组件介绍

时间:2022-10-23 08:09:11

介绍

Storm作为最流行的的实时流计算框架,提供了可容错的分布式计算所要求的基本源语和保障机制

Storm的简单的工作机制

Storm集群中的组件介绍

spout先从外部获取数据,然后简单的封装成一个个的tuple发送到Bolt,Bolt处理后再将处理后的数据封装成一个个的tuple再发送到下一个Bolt,直到最后一个Bolt处理完成

Storm集群中的几大组件

Storm集群中的组件介绍

step1:
1. Client向Storm集群提交任务,将打包好的jar包提交到nimbus的nimbus/inbox目录下
2. 为当前的topology分配一个id,topology_uuid,然后创建好目录nimbus/stormdist/topology_uuid,将jar包,topology对象的序列化文件,以及topology的配置信息放在这个目录下
3. nimbus会根据提交的topology中的并发度(executors的数量)以及worker的数量,来给spout/bolt设定task的数目,并且分配对应的task_id,在这边就指定好了哪一个task执行spout,哪一个task执行哪一个bolt,并记录了下来
下面是通过Jstorm(由于Strom是使用Clojure编写的,我们需要跟踪源码的时候比较困难,这里我们选择alibaba的Jstorm)跟踪到的任务分配的一些信息:
Storm集群中的组件介绍
step2:
nimbus将分配好的任务的信息写到zookeeper上
step3:
supervisor根据zookeeper上的watch机制,监听到有任务分配后,根据指定的任务分配信息启动相应的worker
step4:
查看分配到的任务,以及启动线程来执行Spout和Bolt组件
在执行的过程中,除了最后一个Bolt所在的task,其余的task还需要向其他的task发送数据,这里就需要根据task_id来查看其下一份数据应发送到哪一个worker,然后根据该worker的ip地址(worker所在的主机的ip)和端口号(配置文件中会指定worker的端口号)建立socket连接发送数据