Storm supervisors,workers分配内存

Storm supervisors,workers allocation of Memory

我有 3 个节点的风暴集群:supervisors-2,Nimbus-1。 3 个节点有 30 Gb 内存和 4 个 cpu 核心。在我配置的配置中:

supervisor.slots.ports : 8 (6700-6708)
supervisor.childopts  :-Xmx4096m _JAAS_PLACEHOLDER 
ui.childopts :-Xmx1024m _JAAS_PLACEHOLDER
nimbus.childopts :-Xmx6144m _JAAS_PLACEHOLDER 

我想知道:

  1. 这个插槽如何作用于监管节点?在我看来,我们为每个主管节点分配了 8 个端口。这意味着我将为集群获得多少工人?
  2. 对于 supervisor childopts,它配置了 4 Gb 的 Ram。这是什么意思?同样灵气儿童选择?
  3. 假设如果我是 运行 具有 3 个工作人员的拓扑结构,那么使用的 Ram 和 CPU 核心是什么? 如何计算特定拓扑
  4. 的 Ram 利用率和 CPU
  1. 8 个端口 -> 8 个工人。每个工作人员都分配了一个端口。
  2. supervisor.childopts 被传递给主管进程。 nimbus.childopts 也是如此。
  3. worker 可能 运行 在不同的机器上。每个工人都是一个单独的进程。你可以记下每个进程的memory/cpu。

为了能够设置每个组件(bolt/spout)请求的资源(RAM & CPU)和每个节点上的可用资源,您可以使用this scheduler。通过这种方式,您可以在每个节点上指定可用 RAM 和 CPU,并确定每个资源应分配给每个工作进程的数量。

组件请求的资源

setMemoryLoad(堆上的数字):

builder.setBolt("exclaim1", new ExclamationBolt(), 3)
        .shuffleGrouping("word").setMemoryLoad(512.0);

设置CPU加载(双倍数量):

builder.setBolt("exclaim2", new HeavyBolt(), 1)
            .shuffleGrouping("exclaim1").setCPULoad(450.0);

工作节点中的可用资源

将此参数添加到 storm.yaml

supervisor.memory.capacity.mb: [amount<Double>]

supervisor.cpu.capacity: [amount<Double>]

有关如何完成调度过程的更多详细信息,您可以阅读 this article