Yarn调优
NM配置
-
可用内存
刨除分配给操作系统、其他服务的内存外,剩余的资源应尽量分配给YARN。
1
yarn.nodemanager.resource.memory-mb 默认是8192
-
CPU虚拟核数
建议将此配置设定在逻辑核数的1.5~2倍之间。如果CPU的计算能力要求不高,可以配置为2倍的逻辑CPU。
1
2yarn.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 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WeiJia_Rao!