我正在使用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 ..
答案 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.opts
和mapreduce.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;