storm记录--3--Storm的基本概念

首先我们通过一个 storm 和hadoop的对比来了解storm中的基本概念。

昌乐网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联建站2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站


HadoopStorm
系统角色JobTrackerNimbus
TaskTrackerSupervisor
ChildWorker
应用名称JobTopology
组件接口Mapper/ReducerSpout/Bolt

接下来我们再来具体看一下这些概念。

a、Nimbus:负责资源分配和任务调度。

b、Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。

c、Worker:运行具体处理组件逻辑的进程。

d、Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。

  1. Topology:storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。

  2. Spout:在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。

  3. Bolt:在一个topology中接受数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。

  4. Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value就行了,所以就是一个value list.

  5. Stream:源源不断传递的tuple就组成了stream。

Storm分组机制:

Stream Grouping定义了一个流在Bolt任务间该如何被切分。这里有Storm提供的6个Stream Grouping类型:

  1. 随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。

  2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组;例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。

  3. 全部分组(All grouping):tuple被复制到bolt的所有任务,这种类型需要谨慎使用。

  4. 全局分组(Global grouping):全部流都分配到bolt的同一个任务,明确的说,是分配给ID最新的那个task。

  5. 无分组(None grouping):你不需要关心流失如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。

  6. 直接分组(Direct grouping):这是一个特别的分组类型,元组生产者决定tuple由哪个元组处理者任务接收。

当然还可以实现CustomStreamGrouping接口来定制自己需要的分组。


分享文章:storm记录--3--Storm的基本概念
网页路径:http://myzitong.com/article/iigeph.html