如何为运行在heron中的storm拓扑设置组件的资源需求?

68bkxrlz  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(595)

最近,我想将storm拓扑迁移到heron。但也有一些问题。
在heron拓扑中,我可以设置 components 以及 containers ,例如:

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 ,它将使用 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集群中的worker节点没有这么多 RAM 或者 Disk 资源。因此,在提交storm拓扑时,此拓扑的状态将是 pending 在极光,因为 Insufficient: disk or ram. 我不是很熟悉storm,我可以在storm拓扑中设置组件的资源需求吗?如果没有,除了增加集群中工作节点的资源容量之外,还有其他方法可以解决这个问题吗?任何帮助都是非常感激的。

nsc4cvqm

nsc4cvqm1#

首先,让我试着理解您的问题:您正在询问如何在使用roundrobinpacking资源打包算法时为拓扑中的每个组件设置cpu/内存/磁盘限制。
第二,如果我正确理解你的问题。那么答案只是你问题的第一部分。你可以用 conf 对象由heron框架提供。需要记住的是:
只能设置容器资源。在这种情况下,一个容器中的喷口/螺栓将平等地共享这些资源。
您可以为每种类型的螺栓/喷嘴设置资源。在这种情况下,每个容器使用的总资源是 Package 到该容器中的喷口/螺栓的总和。
你可以把这两者结合起来。在这种情况下,未指定的喷口/螺栓将共享剩余的资源。
第三,heron的底层架构与storm截然不同。我不认为storm提供如此细粒度的资源控制。storm没有这些配置。

相关问题