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



最近,我想将风暴拓扑迁移到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在苍鹭中运行 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 拓扑时,由于Insufficient: disk or ram.,此拓扑的状态将在 Aurora 中pending

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

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

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

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

第三,苍鹭的底层架构与Storm大不相同。我不认为 Storm 提供了如此细粒度的资源控制水平。而 Storm 没有这些配置。

最新更新