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

GC overhead limit exceeded container killed in Pig

我正在 hadoop 2 集群中使用 YARN.All 在我们的开发环境中执行 13 table map join table join as LEFT OUTER with main table 。总数有 15 个加入。

由于大多数小 table 都小于 200-300 MB,所以我使用 USING 'replicated' 来执行脚本 code.It 执行得相当快,但超过 95- 就卡住了99% 。当我检查应用程序 url 时,2 个减速器失败并抛出错误“ GC 开销限制超过容器被 ApplicationMaster.Container 杀死 request.Exit 代码是 143 容器以非零退出代码 143".

退出

Other reducer failed with error 300 秒后超时容器被 ApplicationMaster.Container killed on request.Exit code is 143..

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

<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;

您可以直接从您的猪中调整这些值。

在您的应用程序 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。

要直接从 pig 更改值,在 pig 的顶部,在任何代码之前,添加如下属性:

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;

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