2016-06-13 27 views
1

我hortonworks HDP 2.6集羣,我使用風箏數據集工具來導入數據:如何在使用kite-dataset導入數據時避免mapreduce OutOfMemory Java堆空間錯誤?

./kite-dataset -v csv-import ml-100k/u.data ratings 

我得到這個錯誤:

java.lang.Exception: java.lang.OutOfMemoryError: Java heap space 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) 
Caused by: java.lang.OutOfMemoryError: Java heap space 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:986) 
    at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:402) 
    at org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:81) 
    at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:698) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:770) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

我的羣集節點擁有16 GB或RAM其中一些被列爲可用。

我能做些什麼來避免這個錯誤?

+0

它看起來像是運行mapreduce作業,而你的mapper耗盡內存。您可能需要將'mapred.map.child.java.opts'設置爲更高的值。風箏可能會讓你把它作爲參數傳入,或者你可能需要在'mapred-site.xml'中改變它 –

回答

0

我的第一個衝動是問你的啓動參數是什麼。通常情況下,當您運行MapReduce和遇到了內存不足的錯誤,你會使用類似以下內容作爲啓動PARAMS:

-Dmapred.map.child.java.opts=-Xmx1G -Dmapred.reduce.child.java.opts=-Xmx1G

這裏的關鍵是,這兩筆款項是累積的。因此,在啓動MapReduce之後,您指定的數量不應超過系統上可用的內存量。

相關問題