storm分组模式
Shuffle grouping: Tuples被随机分配到每一个bolt’s task,以便于每一个bolt’s task获得相同数量的tuples。
Fields grouping: Stream被根据属性(fields)进行分组。举例:如果一个Stream根据“user-id”分组,具有相同“user-id”属性的tuples会被发往同一个bolt’s task,具有不同“user-id”的tuples有可能发往不同的bolt’s task。
All grouping:Stream会被重复的发往每一个bolt’s task,使用这个方式需要慎重。
Global grouping:输入流会发往bolt’s tasks中的一个。具体来说,会发往最小id的task
None grouping:这种方式表示你并不关心Stream如何分组。当前版本中,它的效果等同于shuffle grouping。Eventually though, Storm will push down bolts with none groupings to execute in the same thread as the bolt or spout they subscribe from (when possible).
Direct grouping:这是一个特殊的grouping。这种方式可以让tuple的生产者决定消费者中哪一个task能够接收这个tuple。只有当一个Stream声明是一个direct stream时,Direct grouping方式才能生效。必须使用[emitDirect](/apidocs/backtype/storm/task/OutputCollector.html#emitDirect(int, int, java.util.List)方法,才能将tuple发送到一个direct Stream中。一个bolt可以通过两种方式获取到消费者的taskid,一种是使用TopologyContext获取,另一种是通过跟踪OutputCollector中的emit方法的返回值(当tuples发送之后,会返回task ids)
Local or shuffle grouping:如果目标bolt在一个worker进程中有多个或一个tasks,tuples会随机发送到进程内的tasks。否则,这种方式与shuffle grouping相同。
最新文章
- Wix 安装部署教程(十五) --CustomAction的七种用法
- shell学习笔记1
- 使用C#对SQLLite进行操作
- 大熊君说说JS与设计模式之------状态模式State
- JAVA内部类(转)
- SVN Global ignore pattern 忽略文件正则后缀
- javascript基础学习(八)
- css标签选择器
- 解决Xcode7 iOS9苹果将原http协议改成了https协议问题
- squid服务搭建
- wiki oi 3116 高精度练习之加法
- SDS 链表
- 51 nod 1628 非波那契树
- 单列集合类的根接口Collection
- Android内存优化之磁盘缓存
- 使用 OAuth2-Server-php 搭建 OAuth2 Server
- win8.1系统下安装ubuntu实现双系统实践教程
- IGServer
- 广搜 迷宫(zznu 1962)
- DrawerLayout使用