GC开销限制超过Pig中杀死的容器

时间:2016-08-29 09:07:19

标签: hadoop mapreduce garbage-collection apache-pig hadoop2

我正在使用YARN在hadoop 2集群的开发环境中执行13个表映射连接。所有表连接为主表的LEFT OUTER。有15个连接连接的总数。

由于大多数小桌子都不到200-300 MB,所以我使用了USING'复制'执行脚本代码。它执行速度非常快,但卡在95-99%之间。当我检查应用程序URL时,2个减速器失败了,因为" GC开销限制超出了被请求杀死的ApplicationMaster.Container杀死的容器。退出代码为143容器退出时带有非零退出代码143"。

其他reducer失败并出现错误300秒后超时容器被ApplicationMaster.Container杀死,请求被杀死。退出代码为143 ..

2 个答案:

答案 0 :(得分:2)

您可以直接从猪身上调整值。

在您的应用程序URL中,检查作业属性,并查看

的当前值
mapreduce.map.memory.mb   
mapreduce.reduce.memory.mb
mapreduce.map.java.opts
mapreduce.reduce.java.opts
mapreduce.task.io.sort.mb

您可以通过一次将属性值提高512来开始调整。但是,不要将mapreduce.task.io.sort.mb的值提高到756以上。

要在猪的顶部直接更改值,在任何代码之前,按以下方式添加属性:

set mapreduce.map.memory.mb    3072;
set mapreduce.reduce.memory.mb 3072;
set mapreduce.map.java.opts -Xmx2764m;
set mapreduce.reduce.java.opts -Xmx2764m;
set mapreduce.task.io.sort.mb 756;

以上是对我来说适用于与您大小相似的数据集的属性。

答案 1 :(得分:0)

您需要通过设置mapreduce.map.java.optsmapreduce.map.memory.mb来增加YARN容器的大小。在我的环境中,最大尺寸的YARN容器是32GB,所以我在开始流式传感器时添加-Dmapreduce.map.java.opts=-Xmx30000m-Dmapreduce.map.memory.mb=32000,或者从oozie开始:

<property>
 <name>mapreduce.map.java.opts</name>
 <value>-Xmx30000m</value>
</property>
<property>
 <name>mapreduce.map.memory.mb</name>
 <value>32000</value>
</property>

否则你需要摆脱地图连接。在Hive中,我是set auto.convert.join=FALSE;