2017-10-17 102 views
1

我很想知道如何在H2O中管理内存。 它是完全“内存中”还是允许交换以防内存消耗超出可用物理内存?如果节点上共有384GB的RAM,我可以将-mapperXmx参数设置为350GB?我意识到在这种情况下集群将无法处理除H2O集群之外的其他任何内容。 任何指针非常感谢,谢谢。H2O中的内存管理

回答

2
  1. H2O-3将数据完全存储在内存中的分布式列压缩分布式键值存储。

  2. 不支持交换到磁盘。

  3. 既然您暗指mapperXmx,我假设您正在讨论在YARN环境中运行H2O。在这种情况下,每个节点分配的总YARN容器尺寸是:

    mapreduce.map.memory.mb = mapperXmx *(1 + extramempercent/100)

extramempercent是另一个(很少使用)命令-line参数到h2odriver.jar。请注意,默认extramempercent是10(百分比)。

mapperXmx是Java堆的大小,上面提到的额外内存用于JVM实现本身(例如C/C++堆)的额外开销。 YARN对此非常挑剔,如果你的容器试图在其分配(mapreduce.map.memory.mb)上使用一个字节,YARN将立即终止该容器。 (对于H2O-3,由于它是一个内存中的处理引擎,因此一个容器的丢失会终止整个作业。)

您可以将mapperXmxextramempercent设置为一个较大的值,因为YARN有空间启动容器。