CentOS Hadoop 作业调度配置指南
一 核心概念与选择
二 前置准备与基础配置
$HADOOP_HOME、PATH)。$HADOOP_HOME/etc/hadoop/):
<configuration>
<property><name>fs.defaultFS</name><value>hdfs://namenode:8020</value></property>
</configuration>
<configuration>
<property><name>dfs.replication</name><value>3</value></property>
<property><name>dfs.namenode.name.dir</name><value>/data/nn</value></property>
<property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>
</configuration>
<configuration>
<property><name>yarn.resourcemanager.hostname</name><value>rm-host</value></property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
<property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property>
<property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property>
<property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value></property>
<property><name>yarn.scheduler.maximum-allocation-mb</con>value>8192</value></property>
<property><name>yarn.scheduler.capacity.maximum-am-resource-percent</name><value>0.5</value></property>
</configuration>
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value></property>
<property><name>mapreduce.jobhistory.address</name><value>rm-host:10020</value></property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>rm-host:19888</value></property>
</configuration>
hdfs namenode -formatstart-dfs.sh、start-yarn.shjps 应看到 ResourceManager、NodeManager、JobHistoryServer、NameNode、DataNode。三 配置调度器
yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulercapacity-scheduler.xml,示例创建 dev(40%)/prod(60%) 两级队列:<configuration>
<property><name>yarn.scheduler.capacity.root.queues</name><value>dev,prod</value></property>
<property><name>yarn.scheduler.capacity.root.dev.capacity</name><value>40</value></property>
<property><name>yarn.scheduler.capacity.root.dev.maximum-capacity</name><value>60</value></property>
<property><name>yarn.scheduler.capacity.root.dev.user-limit-factor</name><value>1</value></property>
<property><name>yarn.scheduler.capacity.root.dev.state</name><value>RUNNING</value></property>
<property><name>yarn.scheduler.capacity.root.prod.capacity</name><value>60</value></property>
<property><name>yarn.scheduler.capacity.root.prod.maximum-capacity</name><value>80</value></property>
<property><name>yarn.scheduler.capacity.root.prod.user-limit-factor</name><value>1</value></property>
<property><name>yarn.scheduler.capacity.root.prod.state</name><value>RUNNING</value></property>
<property><name>yarn.scheduler.capacity.root.acl_submit_applications</name><value>*</value></property>
<property><name>yarn.scheduler.capacity.root.acl_administer_queue</name><value>*</value></property>
</configuration>
stop-yarn.sh → start-yarn.sh。yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulerfair-scheduler.xml(示例:两级队列与队列放置策略)<allocations>
<queue name="sample_queue" weight="2.0">
<schedulingPolicy>fair</schedulingPolicy>
<queue name="sample_sub_queue"/>
</queue>
<queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
<queuePlacementPolicy>
<rule name="specified"/>
<rule name="primaryGroup" create="false"/>
<rule name="nestedUserQueue"/>
<rule name="default" queue="sample_queue.sample_sub_queue"/>
</queuePlacementPolicy>
</allocations>
yarn jar your-job.jar YourMainClass -Dmapreduce.job.queuename=dev ...spark-submit --queue dev --master yarn ...四 常用调优参数
yarn.scheduler.capacity.maximum-applications:集群最大并发应用数(默认 10000)yarn.scheduler.capacity.maximum-am-resource-percent:用于 AM 的资源占比(默认 0.2,建议结合并发与内存调小以控并发)yarn.scheduler.capacity.resource-calculator:资源比较器,推荐 DominantResourceCalculator(多维资源比较)yarn.scheduler.capacity.node-locality-delay:节点本地性延迟调度次数(通常设为同机架节点数)yarn.nodemanager.resource.memory-mb / yarn.nodemanager.resource.cpu-vcores:节点可分配内存与 vcoreyarn.scheduler.minimum-allocation-mb / yarn.scheduler.maximum-allocation-mb:容器最小/最大分配五 常见问题与排查
yarn-site.xml 调整,例如
yarn.resourcemanager.scheduler.address=${rm-host}:8034yarn.nodemanager.localizer.address=${nm-host}:8041yarn.log-aggregation-enable=trueyarn.log.server.url=http://<history-host>:19888/jobhistory/logsyarn.log-aggregation.retain-seconds=604800(保留 7 天)