来自storm docs:
supervisor.slots.ports :"对于每台工作人员计算机,您可以配置使用此配置在该计算机上运行的工作人员数量。每个工作人员使用单个端口接收消息,此设置定义哪些端口可以使用。如果你在这里定义了五个端口,那么Storm将分配最多五个工作人员在这台机器上运行。"
工作人员:拓扑在一个或多个工作进程中执行。每个工作进程都是物理JVM,并执行拓扑的所有任务的子集。
我的storm.yaml
定义:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
然后我运行一个拓扑,topology.workers
设置为3(kafka-spout-parallelism设置为1,solr-bolt-parallelism设置为2,没有其他螺栓)。
Storm-ui还显示我的拓扑结构运行良好,带有1个喷口和2个螺栓。
但是当我登录到风暴机器并运行ps -aef | grep storm
或jps -l
时,我看不到任何地方的工作人员的JVM流程。只有我看到的流程是:
机器1:
jps -l
30675 backtype.storm.daemon.supervisor
30583 backtype.storm.daemon.logviewer
机器2:
jps -l
6818 backtype.storm.ui.core
6995 backtype.storm.daemon.supervisor
6739 backtype.storm.daemon.nimbus
6904 backtype.storm.daemon.logviewer
风暴不会为每个工作者创建一个物理JVM吗?这不会转换为supervisor.slots.ports
中提到的每个端口的一个JVM吗?
答案 0 :(得分:0)
一个工作槽等于一个JVM插槽。仅在部署拓扑时才会占用插槽。
您可以在工人实际开始之前检查过程。检查Storm UI以确保拓扑已启动,运行和处理数据。如果不是,则使用日志查看器查找错误。由于未被捕获的例外情况,工人可能会崩溃。