Hive在运行HQL时上报内存不足错误导致contains被kill掉,mapreduce任务失败。导致这个错误是因为mapreduce配置的内存数量太小了。可以在mapred-site.xml中添加</p>
set mapreduce.map.memory.mb=1024;
set mapreduce.reduce.memory.mb=1024;
指定Java虚拟机启动的map和reduce任务的内存大小为1024.
注意还有两个属性:
set mapred.reduce.tasks=100; 这个会默认把reduce的任务数量改为100
set mapred.map.tasks=200; 这个会默认把map任务数量改为200 轻易不要设置。
这些属性可以不用重启集群就生效,因为每次job任务开启时候就会加载配置文件。