如何为在Heron中运行的Storm拓扑设置组件的资源要求?

时间:2018-10-22 09:11:40

标签: apache-storm heron

最近,我想将Storm拓扑迁移到Heron。但是它有一些问题。
在Heron拓扑中,我可以设置componentscontainers的资源,例如:

conf.setComponentRam("spout", ByteAmount.fromMegabytes(512));
conf.setComponentRam("split", ByteAmount.fromMegabytes(512));
conf.setComponentRam("count", ByteAmount.fromMegabytes(512));
conf.setContainerDiskRequested(ByteAmount.fromGigabytes(3));
conf.setContainerRamRequested(ByteAmount.fromGigabytes(3));
conf.setContainerCpuRequested(2);

但是在Storm拓扑中,我无法设置这些资源要求。因此,当我尝试使用RoundRobin Packing在Heron中运行Storm拓扑时,它将使用default resource settings如下:

DEFAULT_DISK_PADDING_PER_CONTAINER = ByteAmount.fromGigabytes(12);
DEFAULT_CPU_PADDING_PER_CONTAINER = 1;
MIN_RAM_PER_INSTANCE = ByteAmount.fromMegabytes(192);
DEFAULT_RAM_PADDING_PER_CONTAINER = ByteAmount.fromGigabytes(2);

但是问题是::我的Heron群集中的工作程序节点没有太多的RAMDisk资源。因此,在提交Storm拓扑时,由于pending

,该拓扑的状态在Aurora中将为Insufficient: disk or ram.

我对Storm不太熟悉,是否可以设置Storm拓扑中组件的资源要求?如果不是,除了增加群集中工作节点的资源容量外,还有其他方法可以解决此问题吗?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

首先,让我尝试了解您的问题: 您在询问使用RoundRobinPacking资源打包算法时如何为拓扑中的每个组件设置cpu /内存/磁盘限制。

第二,如果我正确理解了您的问题。答案仅仅是问题的第一部分。您可以使用heron框架提供的conf对象设置这些限制。要记住的一些事情是:

  1. 您只能设置容器资源。在这种情况下,一个容器中的喷嘴/螺栓将平均共享这些资源。
  2. 您可以为每种类型的螺栓/喷嘴设置资源。在这种情况下,每个容器使用的总资源就是包装在该容器中的喷嘴/螺栓的总和。
  3. 您可以将以上两个结合起来。在这种情况下,未指定的喷口/螺栓将共享剩余的资源。

第三,Heron的基础架构与Storm完全不同。我认为Storm无法提供如此精细的资源控制级别。而且Storm没有这些配置。