最近,我想将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拓扑中设置组件的资源需求吗?如果没有,除了增加集群中工作节点的资源容量之外,还有其他方法可以解决这个问题吗?任何帮助都是非常感激的。
1条答案
按热度按时间nsc4cvqm1#
首先,让我试着理解您的问题:您正在询问如何在使用roundrobinpacking资源打包算法时为拓扑中的每个组件设置cpu/内存/磁盘限制。
第二,如果我正确理解你的问题。那么答案只是你问题的第一部分。你可以用
conf
对象由heron框架提供。需要记住的是:只能设置容器资源。在这种情况下,一个容器中的喷口/螺栓将平等地共享这些资源。
您可以为每种类型的螺栓/喷嘴设置资源。在这种情况下,每个容器使用的总资源是 Package 到该容器中的喷口/螺栓的总和。
你可以把这两者结合起来。在这种情况下,未指定的喷口/螺栓将共享剩余的资源。
第三,heron的底层架构与storm截然不同。我不认为storm提供如此细粒度的资源控制。storm没有这些配置。