最近,我想将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
在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群集中的工作程序节点没有太多的RAM
或Disk
资源。因此,在提交Storm拓扑时,由于pending
Insufficient: disk or ram.
我对Storm不太熟悉,是否可以设置Storm拓扑中组件的资源要求?如果不是,除了增加群集中工作节点的资源容量外,还有其他方法可以解决此问题吗?任何帮助都非常感谢。
答案 0 :(得分:1)
首先,让我尝试了解您的问题: 您在询问使用RoundRobinPacking资源打包算法时如何为拓扑中的每个组件设置cpu /内存/磁盘限制。
第二,如果我正确理解了您的问题。答案仅仅是问题的第一部分。您可以使用heron框架提供的conf
对象设置这些限制。要记住的一些事情是:
第三,Heron的基础架构与Storm完全不同。我认为Storm无法提供如此精细的资源控制级别。而且Storm没有这些配置。