FATAL [main] org.apache.hadoop.mapred.YarnChild:运行child时出错:java.lang.OutOfMemoryError:Java堆空间

时间:2015-12-10 09:40:14

标签: java hadoop mapreduce

当我尝试在python中实现 hadoop mapreduce 程序时, mapreduce 在输入文件的大小较小时执行正常。如果我尝试为大小超过50mb的输入文件实现相同的 mapreduce 。我在 log 文件中收到以下错误。

  

FATAL [main] org.apache.hadoop.mapred.YarnChild:运行子项时出错:   java.lang.OutOfMemoryError:Java堆空间at   java.util.Arrays.copyOf(Arrays.java:3236)at   org.apache.hadoop.io.Text.setCapacity(Text.java:266)at   org.apache.hadoop.io.Text.append(Text.java:236)at   org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:243)     在org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)     在   org.apache.hadoop.mapred.LineRecordReader.skipUtfByteOrderMark(LineRecordReader.java:206)     在   org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:244)     在   org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:47)     在   org.apache.hadoop.mapred.MapTask $ TrackedRecordReader.moveToNext(MapTask.java:199)     在   org.apache.hadoop.mapred.MapTask $ TrackedRecordReader.next(MapTask.java:185)     在org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:52)at   org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34)     在org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)at   org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:164)at at   java.security.AccessController.doPrivileged(Native Method)at   javax.security.auth.Subject.doAs(Subject.java:422)at   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)     在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

参考此stackoverflow question,我在mapred-site.xml

中尝试了以下配置更改
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>1974</value>
</property>

<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>7896</value>
</property>

<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx1580m</value>
</property>

<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx6320m</value>
</property>

<property>
    <name>mapred.child.java.opts</name>
    <value> -Xmx524288000</value>
</property>

<property>
  <name>mapred.job.shuffle.input.buffer.percent</name>
  <value>0.20</value>
</property>

但在配置更改后,只执行映射,并且reducer不启动。

所以,我可以修改什么,为大型输入文件实现 mapreduce 以便在没有问题的情况下运行。

0 个答案:

没有答案