在我的 hortonworks HDP 2.6 集群上,我使用 kite-dataset 工具导入数据:
./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,其中一些被列为可用。
我该怎么做才能避免这个错误?
最佳答案
我的第一 react 是询问您的启动参数是什么。通常,当您运行 MapReduce 并遇到内存不足错误时,您会使用如下内容作为启动参数:
-Dmapred.map.child.java.opts=-Xmx1G -Dmapred.reduce.child.java.opts=-Xmx1G
这里的关键是这两个金额是累加的。因此,在启动 MapReduce 后,您指定加在一起的数量不应超过系统上的可用内存。
关于hadoop - 使用kite-dataset导入数据时如何避免mapreduce OutOfMemory Java堆空间错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37796688/