您的位置:首页 > 其它

学习总结十五:分布式实时计算系统storm简介

2014-06-29 18:39 495 查看
storm翻译成中文是暴风雨的意思,意即来得迅速,从作者起名的角度来看,这个框架是用来处理一些实时性响应方面的数据。j是Apache旗下一些免费的开源产品。从官方文档看到storm是一个分布式实时计算系统.非常简单,支持多种开发语言。



storm应用多种场景:实时分析,在线机器学习,持续计算,分布式RPC,ETL等等。storm处理速度非常快,平均每个节点每1秒钟可以处理百万级。强大的伸缩性和容错性,何证你的数据被处理,且容易设置和管理。Stormg整合了队列和数据库技术。

在大数据处理上,大家可能对hadoop中的mapreduce比较熟悉,在hadoop中用mapreduce来清洗数据。hadoop在分布式批量处理数据方面不存在任何问题,但有一个缺点,就是高延迟,在对实时性要求很高的电商平台上并不适用。storm的出现正好解决了低延迟的需求。

我们来看一下storm的适用场景。

1.流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。

2.分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统

下面我们比较mapreduce和storm对应的角色



Nimbus:负责资源分配和任务调度,相当于mapreduce中的jobtracker的角色。
Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程,相当于mapreduce中的tasktracker角色。
Worker:运行具体处理组件逻辑的进程。
Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task

可能会共享一个物理线程,该线程称为executor。

storm是有一个主从结构,主节点为master,从节点是worker。图描述了以上几个角色之间的关系



Topology:storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。
Spout:在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。
Bolt:在一个topology中接受数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。
Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value就行了,所以就是一个value list.
Stream:源源不断传递的tuple就组成了stream。

6. stream grouping:即消息的partition方法。Storm中提供若干种实用的grouping方式,包括shuffle, fields hash, all, global, none, direct和localOrShuffle等。

本文参考文献:

网上一些资料 http://www.searchtb.com/2012/09/introduction-to-storm.html
storm官方文档 http://storm.incubator.apache.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐