风暴监督员,工人分配记忆

时间:2016-02-04 13:30:59

标签: apache-storm

我有3个节点的风暴群:监督者-2,Nimbus-1。 3个节点有30 Gb的Ram和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. 对于主管childopts,配置为4 Gb的Ram。这是什么意思?同样的灵气孩子?
  3. 假设如果我通过此配置运行具有3个工作线程的拓扑,那么使用的Ram和使用的CPU核心是什么? 如何计算特定拓扑的Ram利用率和CPU

2 个答案:

答案 0 :(得分:2)

  1. 8个端口 - > 8名工人。每个工作人员都被分配了一个端口。
  2. supervisor.childopts传递给主管进程。同样适用于nimbus.childopts。
  3. 工作人员可能在不同的机器上运行。每个工人都是一个独立的过程。您可以记下每个进程的内存/ CPU。

答案 1 :(得分:0)

为了能够按每个组件(螺栓/喷口)设置所请求的资源(RAM和CPU)以及每个节点上的可用资源,您可以使用this scheduler。这样你可以指定可用的RAM&每个节点上的CPU,并确定应为每个工作进程分配多少资源。

按组件要求的资源

setMemoryLoad(Number onHeap)

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

setCPULoad(双倍金额)

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