今天简单介绍一下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.
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数量可以在程序端设置,所以使用时要慎重,不能随便设置或者过大设置,不然影响整个集群的运行