本文为您介绍YARN组件堆内存大小配置和YARN使用集群资源配置。
YARN组件堆内存大小配置
组件名 | 配置文件 | 配置项 | 生效范围 | 推荐值 |
---|---|---|---|---|
ResourceManager | yarn-env.sh | YARN_RESOURCEMANAGER_HEAPSIZE | 集群 | 最小1024,推荐2048,如果小作业较多则需要继续调大该参数值,调整后需要重启ResourceManager组件生效。 |
NodeManager | yarn-env.sh | YARN_NODEMANAGER_HEAPSIZE | 集群 | 推荐1024,如果Shuffle Service使用Node Manager内存较多导致FULL GC,则需要继续调大该参数值,调整后需要重启NodeManager组件生效。 |
WebAppProxyServer | yarn-env.sh | YARN_PROXYSERVER_HEAPSIZE | 集群 | 推荐128。调整参数值后需要重启WebAppProxyServer组件生效。 |
TimelineServer | yarn-env.sh | YARN_TIMELINESERVER_HEAPSIZE | 集群 | 推荐512。调整参数值后需要重启TimelineServer组件生效。 |
TimelineServer | yarn-env.sh | YARN_TIMELINESERVER_OPTS中-XX:MaxDirectMemorySize |
集群 | TimelineServer直接内存最大限制,最小512m ,推荐1g。调整参数值后需要重启TimelineServer组件生效。
|
MRHistoryServer | mapred-env.sh | HADOOP_JOB_HISTORYSERVER_HEAPSIZE | 集群 | 推荐128。调整参数值后需要重启MRHistoryServer组件生效。 |
YARN使用集群资源配置
配置项 | 作用 | 配置文件 | 生效范围 | 推荐值 |
---|---|---|---|---|
yarn.scheduler.maximum-allocation-mb | 调度器中单个容器最大可请求的内存资源数。 | yarn-site.xml | 集群 | 如果集群确实需要提交单个容器比较大的作业时需要提高避免调度器限制,过高的配置容易导致资源碎片。调整参数值后需要重启ResourceManager组件生效。 |
yarn.scheduler.minimum-allocation-mb | 调度器中单个容器最小可请求的内存资源数。 | yarn-site.xml | 集群 | 通常不需要调整,调整后需要重启ResourceManager组件生效。 |
yarn.scheduler.maximum-allocation-vcores | 调度器中单个容器最大可请求的虚拟核数。 | yarn-site.xml | 集群 | 默认为32,如果集群确实需要提交单个容器比较大的作业时需要提高避免调度器限制,过高的配置容易导致资源碎片,调整后需要重启ResourceManager组件生效。 |
yarn.scheduler.minimum-allocation-vcores | 调度器中单个容器最小可请求的虚拟核数。 | yarn-site.xml | 集群 | 默认为1,通常不需要调整,调整后需要重启ResourceManager组件生效。 |
yarn.nodemanager.resource.memory-mb | NodeManager声明调度器可使用的内存资源数。 | yarn-site.xml | 节点组 | 默认为节点组实例规格内存的80%,需要根据集群部署情况进行增减。调整后需要重启NodeManager组件才能生效。
重要 必须选中对应节点组进行配置。
|
yarn.nodemanager.resource.cpu-vcores | NodeManager声明调度器可使用的虚拟核数。 | yarn-site.xml | 节点组 | 默认为节点组实例规格vCPU数量,大内存规格实例默认使用实例规格vCPU数量的两倍,需要根据集群部署情况进行增减。调整后需要重启NodeManager组件才能生效。
重要 必须选中对应节点组进行配置。
|
修改yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores参数时,必须选择节点组配置才能生效,因为EMR允许一个集群中通过节点组的方式运行不同规格的ECS实例,一个节点组内的ECS规格是一致的,所以按照节点组进行配置NodeManager资源数能够在调度上保证小规格节点不会水位过高或者大规格节点不会利用率过低,同时不用修改每个ECS节点的NodeManager资源数配置。

EMR会在创建集群和新增节点组第一次扩容时会配置一次yarn.scheduler.maximum-allocation-mb,保证该值大于创建集群时所有节点和新增节点组扩容时扩容节点的yarn.nodemanager.resource.memory-mb,避免作业无法调度。
- 节点组升配或者手动修改yarn.nodemanager.resource.memory-mb时不会触发yarn.scheduler.maximum-allocation-mb的自动更新,如果需要调整可以手动配置一次yarn.scheduler.maximum-allocation-mb。
- 为避免影响您的作业,新增节点组第一次扩容配置yarn.scheduler.maximum-allocation-mb时不会触发ResourceManager重启,如果需要配置生效,则需要手动重启一次ResourceManager。
说明 建议业务低峰期时重启ResourceManager,组件重启过程中可能会有作业失败的情况发生。