Hadoop纱线容器不会分配足够的空间

 dgh 发布于 2023-02-07 19:42

我正在运行Hadoop作业,在我的yarn-site.xml文件中,我有以下配置:

    
            yarn.scheduler.minimum-allocation-mb
            2048
    
    
            yarn.scheduler.maximum-allocation-mb
            4096
    

但是,我偶尔会遇到以下错误:

Container [pid=63375,containerID=container_1388158490598_0001_01_000003] is running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physical memory used; 2.8 GB of 4.2 GB virtual memory used. Killing container.

我发现通过增加yarn.scheduler.minimum-allocation-mb,为容器分配的物理内存会增加.但是,我并不总是希望为我的容器分配4GB,并且认为通过明确指定最大大小,我可以解决这个问题.我意识到Hadoop无法确定在映射器运行之前需要为容器分配多少内存,所以如果需要额外内存,我应该如何为容器分配更多内存?

1 个回答
  • 您还应该正确配置MapReduce的内存分配.从这个HortonWorks教程:

    [...]

    对于我们的示例集群,我们有一个容器的最小RAM(yarn.scheduler.minimum-allocation-mb)= 2 GB.因此,我们将为Map任务容器分配4 GB,为Reduce任务容器分配8 GB.

    在mapred-site.xml中:

    mapreduce.map.memory.mb:4096

    mapreduce.reduce.memory.mb:8192

    每个Container都将运行JVM以执行Map和Reduce任务.JVM堆大小应设置为低于上面定义的Map和Reduce内存,以便它们在YARN分配的Container内存的范围内.

    在mapred-site.xml中:

    mapreduce.map.java.opts: -Xmx3072m

    mapreduce.reduce.java.opts: -Xmx6144m

    上述设置配置了Map和Reduce任务将使用的物理RAM的上限.

    最后,Hadoop邮件列表中此线程中的某个人遇到了同样的问题,在他们的情况下,结果发现他们的代码中存在内存泄漏.

    2023-02-07 19:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有