2015-12-04 12 views
7

Tôi đang thử nghiệm với tải dữ liệu lớn hơn kích thước bộ nhớ trong h2o.Tải dữ liệu lớn hơn kích thước bộ nhớ trong h2o

H2o blog đề cập: 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.

Đây là R mã để kết nối với h2o 3.6.0.8:

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

cho

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 

Tôi cố gắng để tải một 169 MB csv vào h2o.

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

đó ném một lỗi,

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 

đó là dấu hiệu của ra khỏi bộ nhớ error.

Câu hỏi: Nếu H2o hứa hẹn tải một tập dữ liệu lớn hơn dung lượng bộ nhớ (hoán đổi sang cơ chế đĩa như trích dẫn trên blog), đây có phải là cách chính xác để tải dữ liệu không?

Trả lời

5

Hoán đổi đĩa đã bị tắt theo mặc định trước đây, vì hiệu suất quá tệ. Các cạnh chảy máu (không ổn định mới nhất) có một lá cờ để kích hoạt nó: "--cleaner" (cho "bộ nhớ sạch hơn").
Lưu ý rằng cụm của bạn có bộ nhớ cực nhỏ bé: H2O cluster total memory: 0.06 GB Đó là 60MB! Hoàn toàn đủ để bắt đầu một JVM với, ít hơn nhiều chạy H2O. Tôi sẽ ngạc nhiên nếu H2O có thể xuất hiện đúng ở đó, đừng bận tâm đến việc chuyển đổi sang đĩa. Trao đổi được giới hạn để trao đổi dữ liệu một mình. Nếu bạn đang cố gắng thực hiện một kiểm tra trao đổi, hãy lập JVM của bạn lên 1 hoặc 2 Gigs ram, và sau đó tải các bộ dữ liệu tổng hợp nhiều hơn thế.

Vách đá

+0

Cảm ơn vách đá. Tôi đã cố gắng kiểm tra tính năng 'swap-to-disk' có mục đích hạn chế việc sử dụng RAM của H2O. Tôi sẽ làm điều đó phát hành cạnh chảy máu và RAM nhiều hơn nữa. – talegari

+0

@Cliff, có bất kỳ cái nào bạn biết không, thử dùng swap-to-disk nhanh hơn nhiều (thứ tự độ lớn nhanh hơn) Thiết bị đĩa trạng thái rắn PCIE3-NMVe-M.2 được kết nối như Samsung 960 Pro? Tôi có thể xây dựng một giàn khoan khai thác dữ liệu đặc biệt để sử dụng với H2O và một trong số đó, và nhiều RAM như tôi có thể đủ khả năng . –

Các vấn đề liên quan