storm运行机制自我复述

storm是实时流 处理框架,可以对数据集进行实时的分割,整合及其他操作。在storm流处理系统中,storm将数据理想化为一个个tuple来进行处理,一个个tuple形成的流的概念。正是因为这一点特性,storm才能做到对数据的实时性操作。


tuple:tuple是由field和value组成的结构。我们可以将对象field看成map中的key,将value看成map中的value。我们可以将tuple看成是一个以键值对存在的storm处理的基本单位。


spout:spout是可以看成是与源数据集直接打交道的一个组件。spout也作为整个topology中的一个数据源,一个topology中可以有多个spout,spout接受到的是原数据,不做任何处理操作。但是spout会做一些事情,spout会将源数据集的信息通过open方法发送给bolt,并在declareoutputfields方法中声明当前spout发送tuple所包含的字段。这样spout就对tuple完成了发送工作。


bolt:bolt是数据的处理组件,他的作用是对数据进行处理,可以按照你自己的格式进行处理操作。一个topology中可以有多bolt存在。bolt中execute方法是用来执行数据操作的一个方法。发送给下一个bolt用collector.emit方法来进行发送,将第一步处理过的信息交到下一个bolt来进行处理。declareoutputfields来声明当前bolt发送的tuple中包含的字段。


topology:topology是在storm处理中对spout和bolt之间的一个逻辑概念。topology是由topologybuilder来创建的,并且来设置spout和bolt的之间的逻辑关系。

下图是topology的逻辑结构图:

topology01



nimbus:nimbus是集群中的一个主节点。当提交topology后,storm会将整个topology代码存放在nimbus节点中的inbox目录下;之后把当前storm运行的配置文件生成一个stormconf.ser文件放到nimbus节点中的stormdist目录xia,此目录下同时还有序列化之后的topology代码。


supervisor:supervisor节点是集群中的工作节点。可以看做一个物理机器作为一个supervisor节点。supervisor通过不断轮询zookeeper集群来领取所分配的任务,并启动worker来执行任务。在zookeeper中的assigsments中保存了所有topology的任务分配信息、代码存储目录、任务之间的关联关系等。


worker:worker可以看成在supervisor节点中运行的一个进程,每个worker占用一个端口。worker执行的个数可以通过config来创建对象并设置。


task:task可以看成是一个spout或者一个bolt的执行,task的执行个数可以通过builder在设置spout或者bolt中来设置宾星处理的个数。


executor:executor可以看做是一个或者多个spout(bolt)的批量操作。但是批量操作中不能同时出现spout和bolt两种类型。




说明:本人storm小白,看storm才三天时间,写出来一些自己对storm某些概念的理解。有很多理解不到的地方请大神多多指教。写总结的目的很简单,就是想让大神给你指出错误。后期会不断更正。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值