CentOS Hadoop作业调度怎么设置
导读:CentOS下Hadoop作业调度的设置方法 1. 选择作业调度器 Hadoop支持多种作业调度器,需根据集群需求选择: FIFO Scheduler(先进先出):默认调度器,按作业提交顺序执行,适合单用户或小集群,但无法处理多租户资源竞...
CentOS下Hadoop作业调度的设置方法
1. 选择作业调度器
Hadoop支持多种作业调度器,需根据集群需求选择:
- FIFO Scheduler(先进先出):默认调度器,按作业提交顺序执行,适合单用户或小集群,但无法处理多租户资源竞争。
- Capacity Scheduler(容量调度器):为不同队列分配固定资源比例(如
root.default
队列占50%资源),保证多租户资源公平性,适合生产环境。 - Fair Scheduler(公平调度器):动态调整资源分配,使所有作业公平共享集群资源(如长时间运行的作业不会占用过多资源),适合批处理混合场景。
调度器选择通过yarn-site.xml
中的yarn.resourcemanager.scheduler.class
参数配置,默认使用CapacityScheduler
。
2. 配置YARN资源调度参数
YARN的资源调度核心配置在yarn-site.xml
中,关键参数包括:
- ResourceManager地址:指定ResourceManager的RPC和Web UI地址,如:
< 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>
- NodeManager资源限制:设置每个NodeManager可用的物理内存和虚拟CPU,如:
< 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
。
3. 配置MapReduce作业参数
MapReduce作业的资源分配需在mapred-site.xml
中配置,关键参数包括:
- 内存分配:设置Map/Reduce任务的内存限制,避免资源浪费或OOM,如:
< 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>
- CPU分配:设置Map/Reduce任务的虚拟CPU核心数,如:
< 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>
- Shuffle服务:配置MapReduce Shuffle服务的实现类,确保Reduce任务能正确获取Map任务的输出,如:
< property> < name> mapreduce.shuffle.class< /name> < value> org.apache.hadoop.mapred.ShuffleHandler< /value> < /property>
配置完成后,重启MapReduce服务:stop-mapred.sh &
&
start-mapred.sh
。
4. 使用外部调度工具(可选)
若需要更复杂的调度逻辑(如周期性执行、依赖管理),可使用以下工具:
- Crontab:Linux系统自带的定时任务工具,适合简单的周期性作业(如每天凌晨执行数据备份),通过
crontab -e
添加任务,如:0 2 * * * /usr/bin/hadoop jar /path/to/job.jar com.example.MyJob /input /output
- Azkaban:开源的工作流调度框架,支持作业依赖、权限管理、Web界面,适合企业级复杂工作流(如ETL流程),需安装并配置Azkaban Server和Web界面。
- Oozie:Hadoop原生工作流引擎,支持MapReduce、Hive、Pig等作业的编排,适合需要细粒度控制的场景,通过
oozie
命令提交作业。
注意事项
- 调度器配置需根据集群规模和业务需求调整,如多租户环境优先选择
CapacityScheduler
,批处理混合场景优先选择Fair Scheduler
。 - 资源分配参数(如内存、CPU)需根据节点实际硬件配置设置,避免过度分配导致集群性能下降。
- 修改配置文件后,需重启对应服务(YARN、MapReduce)使更改生效。
- 生产环境中建议开启YARN的Web UI监控(
yarn.resourcemanager.webapp.address
),实时查看作业运行状态和资源使用情况。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Hadoop作业调度怎么设置
本文地址: https://pptw.com/jishu/732008.html