Storm中的Stream grouping有哪几种方式?

在拓扑图中,每一个bolt接受一个spout或者bolt的数据,可是每个spout或者bolt有多个实例,所以哪个接受哪个bolt或者spout实例的数据须要stream grouping。服务器

  Storm定义了七种内置数据流分组的方式:网络

1.Shuffle grouping(随机分组):这种方式会随机分发tuple给bolt的各个task,每一个bolt实例接收到相同数量的tuple。并发

2.Fields grouping(按字段分组):根据指定字段的值进行分组。好比说,一个数据流根据'word'字段进行分组,全部具备相同的'word'字段值的tuple会路由到同一个bolt的task中。性能

3.All grouping(全复制分组):将全部的tuple复制后分发给全部的bolt task。每一个订阅数据流的task都会接收到tuple的拷贝。orm

4.Globle grouping(全局分组):这种分组方式将全部的tuples路由到惟一一个task上。Storm按照最小的taskID来选取接收数据的task。注意!!当使用全局分组方式时,设置bolt的task并发度是没有意义的,由于全部tuple都转发到同一个task上了。使用全局分组的时候须要注意,由于全部tuple都转发到一个JVM实例上,可能会引发Storm集群中某个JVM或者服务器出现性能瓶颈或奔溃。路由

5.None grouping(不分组):在功能上和随机分组相同,是为未来预留的。it

6.Direct grouping (指向型分组):数据源会调用emitDirect()方法来判断一个tuple应该由哪一个Storm组件来接收。只能在声明了是指向型的数据流上使用。集群

7.Local or shuffle grouping(本地或随机分组):和随机分组相似,可是,会将tuple分发给同一个worker内的bolt task(若是worker内有接收数据的bolt task)。其余状况下,采用随机分组的方式。取决于topology的并发度,本地或随机分组能够减小网络传输,从而提升topology性能。stream

相关文章
相关标签/搜索