hadoop中的shuffle错误

时间:2016-04-11 16:07:31

标签: hadoop apache-pig hadoop2

当我尝试在hadoop中执行mapreduce程序时,我的群集中出现以下错误。此代码适用于文件较小但hadoop抛出以下错误的数据,并且我在群集中有足够的位置。我尝试将reducer的堆空间从6gb增加到10gb,但仍然失败了。 标签使用

请帮我解决这个问题

  

错误:org.apache.hadoop.mapreduce.task.reduce.Shuffle $ ShuffleError:   在#7中的取样器中随机播放错误   org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)   在org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)at   org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:163)at at   java.security.AccessController.doPrivileged(Native Method)at   javax.security.auth.Subject.doAs(Subject.java:415)at   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)   在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)引起   by:java.lang.OutOfMemoryError:Java堆空间at   org.apache.hadoop.io.BoundedByteArrayOutputStream。(BoundedByteArrayOutputStream.java:56)   在   org.apache.hadoop.io.BoundedByteArrayOutputStream。(BoundedByteArrayOutputStream.java:46)   在   org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput。(InMemoryMapOutput.java:63)   在   org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.unconditionalReserve(MergeManagerImpl.java:305)   在   org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.reserve(MergeManagerImpl.java:295)   在   org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyMapOutput(Fetcher.java:514)   在   org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyFromHost(Fetcher.java:336)   在   org.apache.hadoop.mapreduce.task.reduce.Fetcher.run(Fetcher.java:193)

2 个答案:

答案 0 :(得分:0)

使用mapreduce.[mapper/reducer].java.pts参数增加jvm的大小。建议使用约80-85%的reducer / mapper内存值。 注意,第一个没有直接的Hadoop 2等价物;源代码中的建议是使用另外两个。仍支持mapred.child.java.opts(但如果存在,则会被其他两个更具体的设置覆盖)。

答案 1 :(得分:0)

如果您已经提到了用于运行代码的Map Reduce属性,那么您的问题会更加清晰,因为它将为shuffle阶段的内存计算提供一些见解。

memorylimit = Runtime.getRuntime()。maxMemory()*(mapreduce.reduce.shuffle.input.buffer.percent)。

mapreduce.reduce.shuffle.input.buffer.percent的defualt值为0.9,您可以将其值减小到0.2,以使memoryLimit为<你可以包括的属性是:

<property>
    <name>mapreduce.reduce.shuffle.input.buffer.percent</name>
    <value>0.20</value>
</property>
<property>
    <name>mapreduce.reduce.shuffle.parallelcopies</name>
    <value>4</value>
</property>

有关详细说明,请参阅:https://issues.apache.org/jira/browse/MAPREDUCE-6447