storm并行度
Posted brainstorm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了storm并行度相关的知识,希望对你有一定的参考价值。
conf.setNumWorkers(2); // 该Topology运行在Supervisor节点的2个Worker进程中
topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // 设置并行度为2,则Task个数为21
topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
.setNumTasks(4)
.shuffleGrouping("blue-spout"); // 设置并行度为2,设置Task个数为4 ,则Task个数为4
topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)
.shuffleGrouping("green-bolt"); // 设置并行度为6,则Task个数为61
那么,下面我们看Storm是如何计算一个Topology运行时的并行度,并分配到2个Worker中的:
计算Task总数:2乘1+4+6乘1=12(总计创建12个Task实例)
计算运行时Topology并行度:10/2=5(每个Worker对应5个Executor)
将12个Task分配到2个Worker中的5*2个Executor中:应该是每个Worker上5个Executor,将6个Task分配到5个Executor中
每个Worker中分配6个Task,应该是分配3个Yellow Task、2个Green Task、1个Blue Task
Storm内部优化:会把同类型的Task尽量放到同一个Executor中运行 这句话对么???
分配过程:从Task个数最少的开始,1个Blue Task只能放到一个Executor,总计1个Executor被占用;2个Green Task可以放到同一个Executor中,总计2个Executor被占用;最后看剩下的3个Yellow Task能否分配到5-2=3个Executor中,显然每个Yellow Task对应一个Executor
以上是关于storm并行度的主要内容,如果未能解决你的问题,请参考以下文章
Storm笔记整理:Storm核心概念与验证——并行度与流式分组
Storm的并行度Grouping策略以及消息可靠处理机制简介
当我使用storm trident时,如果我将并行度设置为不小于2,我怎样才能让所有的执行器运行在不同的服务器上,而不仅仅是一台服务器上?