Hadoop支持多种作业调度器,需根据集群需求选择:
root.default队列占50%资源),保证多租户资源公平性,适合生产环境。yarn-site.xml中的yarn.resourcemanager.scheduler.class参数配置,默认使用CapacityScheduler。YARN的资源调度核心配置在yarn-site.xml中,关键参数包括:
<property>
<name>yarn.resourcemanager.address</name>
<value>centos-rm:8032</value> <!-- 替换为实际主机名/IP -->
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>centos-rm:8030</value> <!-- 调度器通信地址 -->
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>centos-rm:8088</value> <!-- ResourceManager Web UI -->
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value> <!-- 总物理内存(MB) -->
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value> <!-- 总虚拟CPU核心数 -->
</property>
CapacityScheduler,需在capacity-scheduler.xml中定义队列资源比例,如:<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>50</value> <!-- default队列占50%资源 -->
</property>
<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>100</value> <!-- 最大可扩展至100% -->
</property>
配置完成后,重启YARN服务使更改生效:stop-yarn.sh && start-yarn.sh。
MapReduce作业的资源分配需在mapred-site.xml中配置,关键参数包括:
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value> <!-- Map任务内存(MB) -->
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value> <!-- Reduce任务内存(MB) -->
</property>
<property>
<name>mapreduce.map.cpu.vcores</name>
<value>2</value> <!-- Map任务虚拟CPU -->
</property>
<property>
<name>mapreduce.reduce.cpu.vcores</name>
<value>4</value> <!-- Reduce任务虚拟CPU -->
</property>
<property>
<name>mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
配置完成后,重启MapReduce服务:stop-mapred.sh && start-mapred.sh。
若需要更复杂的调度逻辑(如周期性执行、依赖管理),可使用以下工具:
crontab -e添加任务,如:0 2 * * * /usr/bin/hadoop jar /path/to/job.jar com.example.MyJob /input /output
oozie命令提交作业。CapacityScheduler,批处理混合场景优先选择Fair Scheduler。yarn.resourcemanager.webapp.address),实时查看作业运行状态和资源使用情况。