聊聊EMR Hadoop集群关于资源分配这些事

2020-11-13 16:58:38 浏览数 (1)

导语

EMR用户常常会将使用不同资源管理系统的组件混合部署在同一个集群,这样会出现资源竞争的情况。若各组件资源超额配置,可能有机器宕机的风险。本文将从案例分析来聊聊混部集群资源配置需要注意的事项

背景

EMR用户反馈多台机器发生了重启,影响集群使用,需要查明原因

定位分析及原因

1、从宕机机器选了一台,在EMR控制台查看该节点资源监控,可以看出机器宕机的直接原因是内存被打爆。什么原因导致的呢

2、继续查看宕机时间点前几分钟的节点监控发现,presto-server,yarn消耗内存占到了90%多,yarn还在不停的分配container资源。

3、查看yarn、presto组件的资源配置项,发现yarn可使用节点内存资源达90%,而presto-server可占用节点内存资源为48G,不算其他组件和机器操作系统的资源占用,这两项远远超出了机器内存的128G。到此定位这次宕机原因是组件资源超额配置。

扩展

EMR集群常用的计算组件比如hive,spark,flink可以使用yarn作为其资源管理系统,但假如集群部署了hbase,impala,presto,storm等组件,就有必要考虑集群资源使用分配的问题,以防超额配置导致节点宕机的风险。下面介绍下各组件与节点有关的资源配置项。

1、yarn 计算资源由yarn-site.xml中的以下配置项决定

代码语言:javascript复制
yarn.nodemanager.resource.memory-mb      yarn最大可用节点内存
yarn.nodemanager.resource.cpu-vcores     yarn最大可用节点vcore,默认情况和节点cpu相同

2、impala 内存资源由impalad.flgs以下配置项决定

代码语言:javascript复制
-mem_limit  单个Impalad节点上能用到的内存上限

3、presto 内存由config.properties以下配置决定

代码语言:javascript复制
query.max-memory-per-node 单个Query在单个Worker上允许的最大user memory
query.max-total-memory-per-node: 单个Query在单个Worker上允许的最大user memory   system memory

4、hbase 需注意RegionServer的堆占用内存的大小,另外还需考虑到预留操作系统和datanode等其他进程内存

0 人点赞