Linux下Hadoop资源分配实践指南
一 核心架构与分配流程
二 节点级资源总量配置
<configuration>
<!-- 节点可分配的物理内存总量 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value>
</property>
<!-- 节点可分配的虚拟CPU核心总数 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<!-- 单个容器可申请的最小/最大内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
<!-- 可选:控制AM占用集群资源的上限 -->
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.5</value>
</property>
</configuration>
三 队列与调度器分配
<configuration>
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>queueA,queueB</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.queueA.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.queueB.capacity</name>
<value>50</value>
</property>
</configuration>
四 作业级内存与CPU分配
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 容器内存 -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<!-- JVM 堆(建议略小于容器内存,留出堆外开销) -->
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx3200m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx3200m</value>
</property>
<!-- 容器 vCPU -->
<property>
<name>mapreduce.map.cpu.vcores</name>
<value>1</value>
</property>
<property>
<name>mapreduce.reduce.cpu.vcores</name>
<value>1</value>
</property>
<!-- Reduce 数量(可按数据量与并发度调整) -->
<property>
<name>mapreduce.job.reduces</name>
<value>4</value>
</property>
</configuration>
五 验证与运维要点