supervisor.slots.ports中的端口是否转换为一个物理JVM?

时间:2016-10-13 22:15:29

标签: jvm apache-storm

来自storm docs

supervisor.slots.ports :"对于每台工作人员计算机,您可以配置使用此配置在该计算机上运行的工作人员数量。每个工作人员使用单个端口接收消息,此设置定义哪些端口可以使用。如果你在这里定义了五个端口,那么Storm将分配最多五个工作人员在这台机器上运行。"

来自storm concepts

工作人员:拓扑在一个或多个工作进程中执行。每个工作进程都是物理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 stormjps -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吗?

1 个答案:

答案 0 :(得分:0)

一个工作槽等于一个JVM插槽。仅在部署拓扑时才会占用插槽。

您可以在工人实际开始之前检查过程。检查Storm UI以确保拓扑已启动,运行和处理数据。如果不是,则使用日志查看器查找错误。由于未被捕获的例外情况,工人可能会崩溃。