Storm运维调优笔记(7)——Pyleus设置拓扑worker数量

jopen 8年前

今天简单介绍一下Pyleus设置worker数量,同时介绍设置之后worker与实际编程spout、bolt的关系。

Pyleus官网 (https://yelp.github.io/pyleus)有这样一段介绍:

Topology level optionsname(str)[mandatory]

Name assigned to your topology.

topology(seq)[mandatory]

Sequence containing all components of the topology, where each component is a map. Allowed components: spout, bolt.

workers(int)

Number of workers to be spawned.

ackers(int)

Number of executors for ackers to be spawned. Corresponds to Storm TOPOLOGY_ACKER_EXECUTORS.

max_spout_pending(int)

Maximum number of tuples that can be pending on a spout task at any given time.

加粗部分是对如何设置拓扑工作节点数量的设置,即workers参数。

而这里如何在yaml配置文件中设置是个问题,因为官网没有给出该参数设置的示例。一般,yaml文件如下这样设置:

从上面引用官网的信息中可以知道,workers参数是Topology的参数,而上图中name、topology都是拓扑的参数,所以他们应该是并列。应该做如下设置:

这样设置后使用打包命令将代码编译打包并提交:

pyleus --verbose build  -n master word_count/pyleus_topology.yaml  pyleus --verbose submit -n master word_count.jar

会看到如下的运行界面:

可以看到不管是整个集群,还是word_count拓扑都显示6个slot全部使用,虽然只有1个spout、3个bolt,使用4个worker即可,这里还是将这些slot分配给了word_count。

这里要对worker设置个数与实际使用情况讲解一下:

(1)拓扑实际代码中需要使用conf设置workers的数量

(2)设置workers数量之后,只是划定使用slot的资源池,该资源池只给这个拓扑用。可以通过storm rebalance 命令任意调整,均衡worker之前的处理请求数量

(3)一般设置的workers数量>spout+bolt的数量,否则拓扑将等待执行

(4)因拓扑中workers数量可以在程序端设置,所以使用时要慎重,不能随便设置或者过大设置,不然影响整个集群的运行

</div>

来自: http://www.adintellig.com/storm-operation-tuning-07/