Apache storm 如何为Heron中运行的Storm拓扑设置组件的资源需求?

Apache storm 如何为Heron中运行的Storm拓扑设置组件的资源需求?,apache-storm,heron,Apache Storm,Heron,最近,我想将Storm拓扑迁移到Heron。但是它也有一些问题。 在Heron topology中,我可以设置组件和容器的资源,例如: conf.setComponentRam("spout", ByteAmount.fromMegabytes(512)); conf.setComponentRam("split", ByteAmount.fromMegabytes(512)); conf.setComponentRam("count", ByteAmount.fromMegabytes(512

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

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拓扑中,我无法设置这些资源需求。因此,当我尝试在Heron中使用
RoundRobin Packing
运行Storm拓扑时,它将使用
默认资源设置
,如下所示:

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集群中的工作节点没有那么多
RAM
磁盘
资源。因此,当提交Storm拓扑时,由于磁盘或ram不足,该拓扑的状态将在Aurora中处于挂起状态。


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

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

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

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

  • 第三,Heron的底层架构与Storm非常不同。我不认为Storm提供了如此细粒度的资源控制。Storm没有这些配置。

    谢谢您的回答。我知道如何使用topology中的conf对象配置Heron中组件和容器的资源。但问题是:当我迁移Storm的拓扑以在Heron上运行时,出现了一个问题,即由于资源不足而无法分配资源。我可以为Heron中的Strom拓扑设置资源需求吗?我认为答案应该是否定的。因此,除了提高Heron群集中节点的资源外,还有其他解决方案吗?如果超过总资源上限,则向群集中添加新资源是解决此问题的唯一方法。好的,谢谢您的帮助。