阅读量:0
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.addressname> <value>centos-rm:8032value> property> <property> <name>yarn.resourcemanager.scheduler.addressname> <value>centos-rm:8030value> property> <property> <name>yarn.resourcemanager.webapp.addressname> <value>centos-rm:8088value> property> - NodeManager资源限制:设置每个NodeManager可用的物理内存和虚拟CPU,如:
<property> <name>yarn.nodemanager.resource.memory-mbname> <value>8192value> property> <property> <name>yarn.nodemanager.resource.cpu-vcoresname> <value>4value> property> - 调度器配置:若使用
CapacityScheduler,需在capacity-scheduler.xml中定义队列资源比例,如:<property> <name>yarn.scheduler.capacity.root.default.capacityname> <value>50value> property> <property> <name>yarn.scheduler.capacity.root.default.maximum-capacityname> <value>100value> property>
配置完成后,重启YARN服务使更改生效:stop-yarn.sh && start-yarn.sh。
3. 配置MapReduce作业参数
MapReduce作业的资源分配需在mapred-site.xml中配置,关键参数包括:
- 内存分配:设置Map/Reduce任务的内存限制,避免资源浪费或OOM,如:
<property> <name>mapreduce.map.memory.mbname> <value>2048value> property> <property> <name>mapreduce.reduce.memory.mbname> <value>4096value> property> - CPU分配:设置Map/Reduce任务的虚拟CPU核心数,如:
<property> <name>mapreduce.map.cpu.vcoresname> <value>2value> property> <property> <name>mapreduce.reduce.cpu.vcoresname> <value>4value> property> - Shuffle服务:配置MapReduce Shuffle服务的实现类,确保Reduce任务能正确获取Map任务的输出,如:
<property> <name>mapreduce.shuffle.classname> <value>org.apache.hadoop.mapred.ShuffleHandlervalue> 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),实时查看作业运行状态和资源使用情况。
以上就是关于“CentOS Hadoop作业调度怎么设置”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm