Storm的基本概念
来源:互联网 发布:多线程编程java 方法 编辑:程序博客网 时间:2024/06/03 03:49
如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。同样,storm也为实时计算提供了一些简单优美的原语。我们会在第三节中详细介绍。
我们来看一下storm的适用场景。
- 流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。
- 分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统。
说了半天,好像都是很玄乎的东西,下面我们开始具体讲解storm的基本概念和它内部的一些实现原理吧。
- Storm的基本概念
首先我们通过一个 storm 和hadoop的对比来了解storm中的基本概念。
HadoopStorm系统角色JobTrackerNimbusTaskTrackerSupervisorChildWorker应用名称JobTopology组件接口Mapper/ReducerSpout/Bolt表3-1
接下来我们再来具体看一下这些概念。
- Nimbus:负责资源分配和任务调度。
- Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
- Worker:运行具体处理组件逻辑的进程。
- Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。
下面这个图描述了以上几个角色之间的关系。
图3-1
- 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。
0 0
- storm的一些基本概念
- Storm的基本概念介绍
- Storm的基本概念
- Storm 1:介绍Storm的基本概念
- storm记录--3--Storm的基本概念
- Storm基本概念
- Storm基本概念
- Storm基本概念
- Storm基本概念
- Storm基本概念
- Storm基本概念
- storm基本概念
- storm基本概念
- Storm基本概念
- storm笔记:storm基本概念
- Storm 简介及组件的基本概念
- 1.Storm基本概念
- Storm基本概念<转>
- 链表学习关键点
- H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
- C语言-线程基础
- android SurfaceView实现视频播放
- C语言-预处理命令
- Storm的基本概念
- 消费者理论概述
- iOS9系列专题——3D Touch
- C语言-运行时内存布局
- android 常用代码
- C语言-指针数组
- 64位系统运行起来自己的eclipse
- NSProcessInfo类方法
- LeetCode_OJ【42】Trapping Rain Water