2017-10-17 99 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有空間啓動容器。