NM配置

  • 可用内存

    刨除分配给操作系统、其他服务的内存外,剩余的资源应尽量分配给YARN。

    1
    yarn.nodemanager.resource.memory-mb 默认是8192
  • CPU虚拟核数

    建议将此配置设定在逻辑核数的1.5~2倍之间。如果CPU的计算能力要求不高,可以配置为2倍的逻辑CPU。

    1
    2
    yarn.nodemanager.resource.cpu-vcores
    该节点上YARN可使用的虚拟CPU个数,默认是8。 目前推荐将该值设值为逻辑CPU核数的1.5~2倍之间

默认情况下,Map或Reduce container会使用1个虚拟CPU内核和1024MB内存,ApplicationMaster使用1536MB内存。

Container启动模式

YARN的NodeManager提供2种Container的启动模式。

默认,YARN为每一个Container启动一个JVM,JVM进程间不能实现资源共享,导致资源本地化的时间开销较大。针对启动时间较长的问题,新增了基于线程资源本地化启动模式,能够有效提升container启动效率。

1
yarn.nodemanager.container-executor.class

设置为“org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor”,则每次启动container将会启动一个线程来实现资源本地化。该模式下,启动时间较短,但无法做到资源(CPU、内存)隔离。

设置为“org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor” ,则每次启动container都会启动一个JVM进程来实现资源本地化。该模式下,启动时间较长,但可以提供较好的资源(CPU、内存)隔离能力。

AM调优

运行的一个大任务,map总数达到了上万的规模,任务失败,发现是ApplicationMaster(以下简称AM)反应缓慢,最终超时失败。

失败原因是Task数量变多时,AM管理的对象也线性增长,因此就需要更多的内存来管理。AM默认分配的内存大小是1.5GB。

建议:任务数量多时增大AM内存

1
yarn.app.mapreduce.am.resource.mb