CentOS Hadoop作业调度怎么配置
导读:CentOS Hadoop 作业调度配置指南 一 核心概念与选择 Hadoop 的作业调度由 YARN 负责,常见调度器有三种:FIFO(先进先出,简单但不适合多租户)、Capacity Scheduler(多队列、容量保证与弹性共享,适...
CentOS Hadoop 作业调度配置指南
一 核心概念与选择
- Hadoop 的作业调度由 YARN 负责,常见调度器有三种:FIFO(先进先出,简单但不适合多租户)、Capacity Scheduler(多队列、容量保证与弹性共享,适合生产多租户)、Fair Scheduler(按权重与缺额动态均衡,强调公平)。在 Hadoop 2.7.2+ 之后默认使用 Capacity Scheduler;部分发行版(如 CDH)默认使用 Fair Scheduler。选择建议:多队列与资源隔离优先选 Capacity,强调作业间公平与弹性选 Fair,快速验证或单用户环境可用 FIFO。
二 前置准备与基础配置
- 环境要求:CentOS 7+、JDK 8、SSH 免密;Hadoop 安装并配置环境变量(
$HADOOP_HOME、PATH)。 - 关键配置文件与示例参数(位于
$HADOOP_HOME/etc/hadoop/):- core-site.xml
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://namenode:8020< /value> < /property> < /configuration> - hdfs-site.xml
< 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> - yarn-site.xml(示例为每台 NodeManager 物理内存 4 GB、4 vcores)
< 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> - mapred-site.xml
< 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>
- core-site.xml
- 启动与验证
- 首次启动需格式化 NameNode:
hdfs namenode -format - 启动集群:
start-dfs.sh、start-yarn.sh - 验证进程:
jps应看到 ResourceManager、NodeManager、JobHistoryServer、NameNode、DataNode。
- 首次启动需格式化 NameNode:
三 配置调度器
- 使用 Capacity Scheduler(默认)
- 确认调度器类:
yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler - 编辑
capacity-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> - 分发配置并重启 YARN(滚动重启亦可):
stop-yarn.sh→start-yarn.sh。
- 确认调度器类:
- 使用 Fair Scheduler
- 指定调度器类:
yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler - 创建
fair-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。
- 指定调度器类:
- 提交作业到指定队列
- MapReduce:
yarn jar your-job.jar YourMainClass -Dmapreduce.job.queuename=dev ... - Spark on YARN:
spark-submit --queue dev --master yarn ... - 提示:若队列不存在或 ACL 限制,作业会被拒绝或回退到默认队列(取决于配置)。
- MapReduce:
四 常用调优参数
- 容量调度关键项
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:容器最小/最大分配
- 运行观察与排错
- 通过 ResourceManager Web UI 与 JobHistory Web UI 观察队列使用、应用排队与抢占情况;必要时调整队列容量、权重与 AM 占比。
五 常见问题与排查
- 端口冲突:若 8030/8040 等端口被占用,可在
yarn-site.xml调整,例如yarn.resourcemanager.scheduler.address=${ rm-host} :8034yarn.nodemanager.localizer.address=${ nm-host} :8041
- 日志聚集:便于排查失败作业
yarn.log-aggregation-enable=trueyarn.log.server.url=http://< history-host> :19888/jobhistory/logsyarn.log-aggregation.retain-seconds=604800(保留 7 天)
- 配置生效:修改调度器或队列配置后需重启 YARN;多队列环境下注意队列 ACL 与容量边界,避免作业被拒或“卡在排队”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Hadoop作业调度怎么配置
本文地址: https://pptw.com/jishu/754290.html
