首页主机资讯CentOS Hadoop作业调度怎么配置

CentOS Hadoop作业调度怎么配置

时间2025-11-24 11:39:04发布访客分类主机资讯浏览613
导读: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_HOMEPATH)。
  • 关键配置文件与示例参数(位于 $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 GB4 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>
          
      
  • 启动与验证
    • 首次启动需格式化 NameNode:hdfs namenode -format
    • 启动集群:start-dfs.shstart-yarn.sh
    • 验证进程:jps 应看到 ResourceManager、NodeManager、JobHistoryServer、NameNode、DataNode

三 配置调度器

  • 使用 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.shstart-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 限制,作业会被拒绝或回退到默认队列(取决于配置)。

四 常用调优参数

  • 容量调度关键项
    • 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:节点可分配内存与 vcore
    • yarn.scheduler.minimum-allocation-mb / yarn.scheduler.maximum-allocation-mb:容器最小/最大分配
  • 运行观察与排错
    • 通过 ResourceManager Web UIJobHistory Web UI 观察队列使用、应用排队与抢占情况;必要时调整队列容量、权重与 AM 占比。

五 常见问题与排查

  • 端口冲突:若 8030/8040 等端口被占用,可在 yarn-site.xml 调整,例如
    • yarn.resourcemanager.scheduler.address=${ rm-host} :8034
    • yarn.nodemanager.localizer.address=${ nm-host} :8041
  • 日志聚集:便于排查失败作业
    • yarn.log-aggregation-enable=true
    • yarn.log.server.url=http://< history-host> :19888/jobhistory/logs
    • yarn.log-aggregation.retain-seconds=604800(保留 7 天
  • 配置生效:修改调度器或队列配置后需重启 YARN;多队列环境下注意队列 ACL 与容量边界,避免作业被拒或“卡在排队”。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Hadoop作业调度怎么配置
本文地址: https://pptw.com/jishu/754290.html
centos weblogic集群搭建方法 CentOS如何提升JMeter测试稳定性

游客 回复需填写必要信息