Could not deallocate container for task attemptId attempt_1527460471557_511564_r_000000_0
hive任务执行出错,map和reduce进程一直为0%查看log日志发现,报错如下:Could not deallocate container for task attemptId attempt_XXX从字面意思可知,是因为没有给任务分配container,在创建容器的过程中出错了。通过查阅资料发现,主要是以下两个原因:(1)nodemanager内存不够;(2)yarn...
hive任务执行出错,map和reduce进程一直为0%
查看log日志发现,报错如下:Could not deallocate container for task attemptId attempt_XXX
从字面意思可知,是因为没有给任务分配container,在创建容器的过程中出错了。
通过查阅资料发现,主要是以下两个原因:
(1)nodemanager内存不够;
(2)yarn.nodemanager.resource.memory-mb和yarn.scheduler.maximum-allocation-mb的值同倍数调整小了。
其中yarn.nodemanager.resource.memory-mb:指的是YARN可以分配的最大物理内存,要根据真实服务器的物理内存大小进行调整;yarn.scheduler.maximum-allocation-mb:指的是单个容器(JVM进程)可以申请的最大物理内存,很显然这个值是不能大于参数“yarn.nodemanager.resource.memory-mb”的值的。后来想到MRMR作业启动的时候也有内存参数,果不其然,查看了下文件mapred-site.xml后,里边有个参数mapreduce.reduce.memory.mb,值是4096,这个参数的含义是:Reduce Task需要的内存。作业要运行在容器里,容器肯定要大于等于作业大小才对,所以在hive任务里分别设置两个参数为:
set yarn.nodemanager.resource.memory-mb=4096
set yarn.scheduler.maximum-allocation-mb=4096
(亦可将mapred-site.xml中的参数改小,然后重启hadoop)
重新执行该任务,成功!!!
参考链接:https://blog.csdn.net/achilles12345/article/details/77437102
更多推荐
所有评论(0)