学习总结十五:分布式实时计算系统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/
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/
相关文章推荐
- 一脸懵逼学习Storm---(一个开源的分布式实时计算系统)
- 一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)
- Storm实时分布式计算系统简介
- 一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)
- 一脸懵逼学习Storm---(一个开源的分布式实时计算系统)
- 从Storm和Spark 学习流式实时分布式计算的设计
- 从Storm和Spark 学习流式实时分布式计算的设计
- 实时可靠的开源分布式实时计算系统——Storm
- 从Storm和Spark 学习流式实时分布式计算的设计
- 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
- 从Storm和Spark 学习流式实时分布式计算的设计
- 从Storm和Spark 学习流式实时分布式计算的设计
- 从Storm和Spark 学习流式实时分布式计算的设计
- (第8篇)实时可靠的开源分布式实时计算系统——Storm
- Storm和Spark 学习流式实时分布式计算的设计
- (第8篇)实时可靠的开源分布式实时计算系统——Storm
- 从Storm和Spark 学习流式实时分布式计算的设计
- 实时可靠的开源分布式实时计算系统——Storm
- Storm是一个分布式的、高容错的实时计算系统。
- 实时分布式具备高容错性的计算系统storm------核心topology架构图和storm运行topology的工作流程图