storm中包含哪些组件

Storm是一个实时计算系统,由nimbus、supervisor、zookeeper、worker和task等组件构成。nimbus负责任务分配,supervisor执行任务。topology是运行程序,由spout产生数据,bolt进行处理。spout分为可靠和不可靠,bolt处理各种操作,tuple是基本消息单位,stream是无边界的消息流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发组件

Storm 集群和hodoop集群看起来类似,但是hadoop上运行的是mapreduce jobs ,而在storm上运行的是拓扑topology ,两者之前的区别是mapreduce jobs 运行完程序(离线数据)之后会结束,而topology不会结束(实时数据),除非手动kill,或者出现异常。

Storm 集群由一个主节点nimbus和一群工作节点 supervisor组成,通过zookeeper行动协调。

 

1)nimbus主节点:相当于hadoop 的JobTracker、yarn的ResourceManager,主要进行计算任务分配信息,哪些worker启动在哪些supervisor上,哪些worker运行那些线程上来执行task。

2)supervisor工作节点:相当于hadoopr的TaskTracker、yarn的NodeManager,负责接受nimbus分配的任务,启动或关闭属于自己管理的worker,每个工作节点都是topology的一个子集的实现,nimbus 和supervisor之间通过zookeeper集群进行协调。

3)zookeeper 集群:是完成nimbus和supervisor之间的协调服务。nimbus启动会将配制信息写入zookeeper,zookeeper的watch机制会通知supervisor,然后supervisor下载任务并启动worker,supervisor启动时也会将服务器上的配置信息写入zookeeper。

4)worker:运行具体处理组件逻辑的进程

5)task:worker中的每一个spout/bolt的线程称之为task,在storm8.0之后task不再与物理线程对接,同一个spout/bolt的task可能会共享一个物理线程,这个线程就是executor。

运行组件

 

1)topology:storm中运行的一个实时程序,因为各个组件的消息流动形成一个逻辑上的一个拓扑结构,一个topology是由spouts和bolts 组成的,通过Stream Grouping将spouts和bolts 连接起来。

2)spout:在一个topology中产生源数据的组件,通常spout会从外部的数据源中读取数据,然后转换为topology内部数据,spout分为可靠和不可靠两种,当Storm接收失败时,可靠的spout会对tuple(元组、数据项组成的列表)进行重发;而不可靠的spout不会考虑成功与否只发送一次。Spout最主要的方法是nextTuple()该方法会发送一个新的tuple到topology,没有新的tuple会返回,而且nextTuple()方法不能阻塞,因storm在同一个线程上会调用所有消息源的spout的方法。另外两个比较重要的方法是ack()和fail() storm在检测一个tuple被整个topology成功处理的时候会调用ack(),否则会调用fail(),storm只会对可靠的spout调用ack()和fail()。

3)Bolt:topology的所有处理都有Bolt完成,即所有的消息处理逻辑都封装在bolt中,比如执行过虑、函数操作、合并、写入数据库等任何操作。

Bolt从spout中接收数据并处理,如果遇到复杂流的处理也可以将Tuple发送给另一个Bolt处理,bolt可以发送多条消息流,其中最重要的方法是executor()以新的tuple作为参数接收,不管是spout还是bolt,如果将tuple发送成多个流,这些流都可以用declareStream()来声明。

4)tuple:一个消息转递的基本单元,本来是以键值对存在的map,但是各个组件之间传递的tuple字段名已经事先定义好,所以tuple按序填入各个value就行了,所以就是一个value list。

5)stream:源源不断的tuple组成了stream,一个消息流是一个没有边界的tuple序列, 而这些tuple序列会以一种分布式的方式并行地创建和处理。通过对stream中tuple序列中每个字段命名来定义stream。在默认的情况下,tuple的字段类型可以是:integer,long,short, byte,string,double,float,boolean和byte array。你也可以自定义类型(只要实现相应的序列化器)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值