CentOS Hadoop作业调度如何设置
导读:CentOS 上 Hadoop 作业调度设置指南 一 核心概念与选择 Hadoop 的作业调度由 YARN 负责,核心组件包括 ResourceManager、NodeManager、ApplicationMaster、Container...
CentOS 上 Hadoop 作业调度设置指南
一 核心概念与选择
- Hadoop 的作业调度由 YARN 负责,核心组件包括 ResourceManager、NodeManager、ApplicationMaster、Container。提交到集群的作业由 YARN 统一进行资源分配与调度。常见调度器有:
- FIFO Scheduler:先进先出,简单但不适合多租户与混合负载。
- Capacity Scheduler:按队列配额保障资源,适合多租户、容量隔离场景。
- Fair Scheduler:按应用公平分配资源,兼顾效率与公平。
- 在 Hadoop 2.x 中,默认调度器通常为 Capacity Scheduler;在 Hadoop 2.5 版本附近,部分发行版默认可能为 Fair Scheduler,实际以集群配置为准。调度器通过参数 yarn.resourcemanager.scheduler.class 指定。
二 前置配置与基础参数
- 确认运行模式与基础通信参数(示例值可按需调整):
- 在 mapred-site.xml 设置:
- mapreduce.framework.name:yarn
- yarn.app.mapreduce.am.resource.mb:1024
- yarn.app.mapreduce.am.command-opts:-Xmx768m
- 在 yarn-site.xml 设置 NodeManager 必备服务:
- yarn.nodemanager.aux-services:mapreduce_shuffle
- yarn.nodemanager.aux-services.mapreduce.shuffle.class:org.apache.hadoop.mapred.ShuffleHandler
- 在 mapred-site.xml 设置:
- 资源配置边界(调度器粒度):
- yarn.scheduler.minimum-allocation-mb / maximum-allocation-mb
- yarn.scheduler.minimum-allocation-vcores / maximum-allocation-vcores
- 节点资源(NodeManager 粒度,需与机器实际资源匹配):
- yarn.nodemanager.resource.memory-mb
- yarn.nodemanager.resource.cpu-vcores
- 说明:上述参数均位于 $HADOOP_HOME/etc/hadoop/ 相应配置文件中,修改后需同步到所有节点并重启相关服务生效。
三 配置调度器与队列
- 选择调度器(二选一,示例为启用 Capacity Scheduler):
- 在 yarn-site.xml 设置:
- yarn.resourcemanager.scheduler.class:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
- 或在 capacity-scheduler.xml 中设置:
- yarn.scheduler.capacity.scheduler.name:CapacityScheduler
- 在 yarn-site.xml 设置:
- 配置多队列与配额(示例:root 下创建 dev 与 prod 两个队列):
- 在 capacity-scheduler.xml 中设置关键项(示例值可按需调整):
- root 总容量:yarn.scheduler.capacity.root.capacity:100
- 开发队列:yarn.scheduler.capacity.root.dev.capacity:40
- 生产队列:yarn.scheduler.capacity.root.prod.capacity:60
- 队列上限:yarn.scheduler.capacity.root.dev.maximum-capacity:60
- 队列上限:yarn.scheduler.capacity.root.prod.maximum-capacity:80
- 队列状态:yarn.scheduler.capacity.root.dev.state:RUNNING
- 队列状态:yarn.scheduler.capacity.root.prod.state:RUNNING
- 用户上限因子:yarn.scheduler.capacity.root..user-limit-factor:1
- 在 capacity-scheduler.xml 中设置关键项(示例值可按需调整):
- 使配置生效:
- 将配置文件分发到所有节点后,重启 ResourceManager 与 NodeManager(生产环境建议滚动重启以减小影响)。
- 容量调度器支持动态刷新队列配置,可通过 yarn rmadmin 相关命令进行在线刷新(如队列增删改后执行刷新)。
四 提交作业与队列映射
- 提交作业到指定队列(示例):
- MapReduce 提交:
- hadoop jar your-job.jar YourMainClass
-D mapreduce.job.queuename=dev
-D mapreduce.map.memory.mb=1024
-D mapreduce.reduce.memory.mb=1024
/input /output
- hadoop jar your-job.jar YourMainClass
- Spark on YARN 提交:
- spark-submit
–master yarn
–queue prod
–executor-memory 2g
–num-executors 4
your-app.jar
- spark-submit
- MapReduce 提交:
- 队列映射与权限:
- 可通过 Capacity Scheduler 的 ACL 配置对队列进行访问控制(如提交与管理权限),在多租户环境下建议开启并细化到队列维度。
五 监控与常见排错
- 常用监控与运维命令:
- 查看应用列表:yarn application -list
- 查看应用详情:yarn application -status < app_id>
- 动态管理节点黑白名单:配置 yarn.resourcemanager.nodes.include-path / exclude-path 后执行刷新,使变更生效。
- Web 界面:访问 ResourceManager Web UI(默认 8088 端口) 查看调度器类型、队列资源使用、应用运行状态与日志。
- 常见问题与建议:
- 作业长时间排队:检查队列容量与已用配额,必要时调整 capacity / maximum-capacity 或切换到更合适的队列。
- 容器申请被拒:核对 mapreduce.{ map|reduce} .memory.mb 是否在 yarn.scheduler.{ min|max} -allocation-mb 范围内,且不超过节点资源。
- 节点不健康或磁盘满:通过 NodeManager 日志目录与 Web UI 定位问题,必要时临时将节点加入黑名单以隔离影响。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Hadoop作业调度如何设置
本文地址: https://pptw.com/jishu/761190.html
