首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在使用kite-dataset导入数据时出现mapreduce OutOfMemory Java堆空间错误?

如何避免在使用kite-dataset导入数据时出现mapreduce OutOfMemory Java堆空间错误?
EN

Stack Overflow用户
提问于 2016-06-14 02:24:03
回答 1查看 812关注 0票数 1

在我的hortonworks HDP 2.6集群上,我使用kite-dataset工具导入数据:

代码语言:javascript
复制
./kite-dataset -v csv-import ml-100k/u.data  ratings

我得到了这个错误:

代码语言:javascript
复制
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,其中一些被列为可用。

我可以做些什么来避免这个错误?

EN

回答 1

Stack Overflow用户

发布于 2017-03-02 19:08:33

我的第一个冲动是问你的启动参数是什么。通常,当您运行MapReduce并遇到内存不足错误时,您将使用类似以下内容作为启动参数:

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

这里的关键是这两个数量是累积的。因此,在启动MapReduce之后,您指定的总量加在一起不应该接近超过系统上的可用内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37796688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档