我正在使用sqoop1.4.5-cdh5.2.1和oracle。
我从甲骨文公司进口了一小套115k的记录。sqoop命令可以很好地将--num mappers设置为5。但是当我把它设置为5以上时,我得到了一个java堆空间的错误。
有谁能告诉我为什么会这样。
线程“main”java.lang.outofmemoryerror中的日志异常:java.math.biginteger处的java堆空间。(biginteger。java:394)在java.math.bigdecimal.bigtentothe(bigdecimal。java:3380)在java.math.bigdecimal.bigdigitlength(bigdecimal。java:3635)在java.math.bigdecimal.precision(bigdecimal。java:2189)在java.math.bigdecimal.comparemagnitude(bigdecimal。java:2585)在java.math.bigdecimal.compareto(bigdecimal。java:2566)在org.apache.sqoop.mapreduce.db.bigdecimalspilter.split(bigdecimalspilter。java:138)在org.apache.sqoop.mapreduce.db.bigdecimalspilter.split(bigdecimalspilter。java:69)在org.apache.sqoop.mapreduce.db.datadrivendbinputformat.getsplits(datadrivendbinputformat)。java:171)在org.apache.hadoop.mapreduce.jobsubmitter.writenewsplits(jobsubmitter。java:498)在org.apache.hadoop.mapreduce.jobsubmitter.writesplits(jobsubmitter。java:515)在org.apache.hadoop.mapreduce.jobsubmitter.submitjobinternal(jobsubmitter。java:399)在org.apache.hadoop.mapreduce.job$10.run(作业。java:1295)在org.apache.hadoop.mapreduce.job$10.run(job。java:1292)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1614)在org.apache.hadoop.mapreduce.job.submit(作业。java:1292)在org.apache.hadoop.mapreduce.job.waitforcompletion(作业。java:1313)在org.apache.sqoop.mapreduce.importjobbase.dosubmitjob(importjobbase。java:198)在org.apache.sqoop.mapreduce.importjobbase.runjob(importjobbase。java:171)在org.apache.sqoop.mapreduce.importjobbase.runimport(importjobbase。java:268)在org.apache.sqoop.manager.sqlmanager.importquery(sqlmanager。java:721)在org.apache.sqoop.tool.importtool.importtable(importtool。java:499)在org.apache.sqoop.tool.importtool.run(importtool。java:605)在org.apache.sqoop.sqoop.run(sqoop。java:143)在org.apache.hadoop.util.toolrunner.run(toolrunner。java:70)在org.apache.sqoop.sqoop.runsqoop(sqoop。java:179)在org.apache.sqoop.sqoop.runtool(sqoop。java:218)在org.apache.sqoop.sqoop.runtool(sqoop。java:227)在org.apache.sqoop.sqoop.main(sqoop。java:236)2015-06-25 13:48:59状态:1 2015-06-25 13:48:59错误(1)sqoop失败。2015-06-25 13:48:59错误(1)运行
2条答案
按热度按时间camsedfj1#
尝试在$hadoop\u home/conf/mapred-site.xml上添加属性,如下所示
根据您的环境进行调整,可以加上或减去该值。记住在每个节点上修改。
或修改站点上的虚拟内存限制
它的默认值是2.1g
y53ybaqx2#
默认情况下,每个map和reduce任务都在自己的jvm中运行。因此,每个Map器将消耗一定数量的物理内存。随着Map器数量的不断增加,内存需求也将不断增长。如果java进程不能分配足够的内存,它将抛出
java.lang.OutOfMemoryError
在您的情况下,系统(或虚拟机,如果您运行的是虚拟机)可能有足够的内存,最多只能容纳5个Map器。你可以跑了
top
命令启动>5Map程序并监视可用内存。