2015-12-04 10 views
7

Ich experimentiere mit dem Laden von Daten größer als die Speichergröße in H2O.Laden von Daten größer als die Speichergröße in h2o

H2o blog erwähnt: A note on Bigger Data and GC: We do a user-mode swap-to-disk when the Java heap gets too full, i.e., you’re using more Big Data than physical DRAM. We won’t die with a GC death-spiral, but we will degrade to out-of-core speeds. We’ll go as fast as the disk will allow. I’ve personally tested loading a 12Gb dataset into a 2Gb (32bit) JVM; it took about 5 minutes to load the data, and another 5 minutes to run a Logistic Regression.

Hier ist der R Code h2o 3.6.0.8 verbinden:

h2o.init(max_mem_size = '60m') # alloting 60mb for h2o, R is running on 8GB RAM machine 

gibt

java version "1.8.0_65" 
Java(TM) SE Runtime Environment (build 1.8.0_65-b17) 
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) 

.Successfully connected to http://127.0.0.1:54321/ 

R is connected to the H2O cluster: 
    H2O cluster uptime:   2 seconds 561 milliseconds 
    H2O cluster version:  3.6.0.8 
    H2O cluster name:   H2O_started_from_R_RILITS-HWLTP_tkn816 
    H2O cluster total nodes: 1 
    H2O cluster total memory: 0.06 GB 
    H2O cluster total cores: 4 
    H2O cluster allowed cores: 2 
    H2O cluster healthy:  TRUE 

Note: As started, H2O is limited to the CRAN default of 2 CPUs. 
     Shut down and restart H2O as shown below to use all your CPUs. 
      > h2o.shutdown() 
      > h2o.init(nthreads = -1) 

IP Address: 127.0.0.1 
Port  : 54321 
Session ID: _sid_b2e0af0f0c62cd64a8fcdee65b244d75 
Key Count : 3 

ich ein 169 MB csv in h2o zu laden versucht.

dat.hex <- h2o.importFile('dat.csv') 

, die einen Fehler warf

Error in .h2o.__checkConnectionHealth() : 
    H2O connection has been severed. Cannot connect to instance at http://127.0.0.1:54321/ 
Failed to connect to 127.0.0.1 port 54321: Connection refused 

die error von aus dem Speicher anzeigt.

Frage: Wenn H2O verspricht, einen Datensatz größer als seine Speicherkapazität zu laden (Swap to Disk-Mechanismus wie das Blog Zitat oben sagt), ist dies der richtige Weg, um die Daten zu laden?

Antwort

5

Swap-to-Disk wurde vor einiger Zeit standardmäßig deaktiviert, weil die Leistung so schlecht war. Der blutende (nicht zuletzt stabile) hat ein Flag, um es zu aktivieren: "--cleaner" (für "memory cleaner").
Beachten Sie, dass Ihr Cluster einen EXTREM winzigen Speicher hat: H2O cluster total memory: 0.06 GB Das ist 60 MB! Kaum genug, um eine JVM mit H2O zu starten. Ich würde mich wundern, wenn H2O überhaupt dort auftauchen könnte, geschweige denn den Austausch auf die Festplatte. Der Austausch beschränkt sich nur auf den Austausch der Daten. Wenn Sie versuchen, einen Swap-Test durchzuführen, erhöhen Sie Ihre JVM auf 1 oder 2 Gigs ram, und laden Sie dann Datensätze, die mehr summieren.

Cliff

+0

Danke Klippe. Ich habe versucht, das 'swap-to-disk'-Feature zu testen, das die RAM-Nutzung von H2O gezielt einschränkt. Ich werde diese blutende Edge Release und mehr RAM machen. – talegari

+0

@Cliff, hat jemand, den Sie kennen, versuchte mit Swap-to-Disk auf eine viel schnellere (Größenordnung der Geschwindigkeit schneller) PCIE3-NMVe-M.2-verbundenen Solid State Disk-Gerät wie ein Samsung 960 Pro? Mein Glück war, dass ich immer wieder Datensätze finde, die nur ein bisschen zu groß für mein System sind .... Ich könnte ein Data-Mining-Rig speziell für den Einsatz mit H2O und eines davon erstellen und so viel RAM, wie ich mir leisten kann . –