Container [pid=5616,containerID=container_e50_1734408743176_3027740_01_000006] is running 507887616B beyond the ‘PHYSICAL’ memory limit. Current usage: 4.5 GB of 4 GB physical memory used; 6.6 GB of 8.4 GB virtual memory used. Killing container.
1.增大map,reduce默认使用内存的配置大小。
hive>set mapreduce.map.memory.mb=4096;
hive>set mapreduce.reduce.memory.mb=4096;
Java堆内存要小于container的大小。
set mapreduce.map.java.opts=-Xmx3072m;
set mapreduce.reduce.java.opts=-Xmx3072m;
2.增加虚拟内存的虚拟化比率,默认每个maptask和reudcetask虚拟化的内存比例是2.1,可适当调大(yarn-site.xml)。
hive> set yarn.nodemanager.vmem-pmem-ratio=4.2
3.配置yarn不内存检查(yarn-site.xml,重启集群),不建议-可能会造成内存泄露。
hive> set yarn.nodemanager.vmem-check-enabled=false;
4.增加map和reduce的个数
4-1.增加map的个数
set mapred.max.split.size=134217728 设置切片信息大小成128Mb,这样一个块用1个task执行。
4-2.增加reduce数量,
set hive.exec.reducers.bytes.per.reducer