温馨提示×

CentOS Hadoop作业调度如何配置

小樊
59
2025-09-20 10:33:26
栏目: 智能运维

CentOS下Hadoop作业调度配置指南

一、作业调度器选择

Hadoop支持多种作业调度器,需根据业务场景选择:

  • FIFO调度器(默认):按作业提交顺序执行,适合单用户或简单场景,但无法处理多用户资源争抢。
  • Capacity Scheduler(容量调度器):将集群资源划分为多个队列(如prod生产队列、dev开发队列),每个队列分配固定资源比例(如prod占70%、dev占30%),支持多租户资源隔离,适合企业多部门共享集群。
  • Fair Scheduler(公平调度器):动态平衡资源分配,确保所有作业公平共享集群资源(如real-time实时作业和batch批处理作业各占50%资源),适合交互式作业或多租户公平性要求高的场景。

二、Capacity Scheduler配置(以CentOS为例)

  1. 修改yarn-site.xml(启用容量调度器)
    $HADOOP_HOME/etc/hadoop/yarn-site.xml中添加以下配置,指定使用CapacityTaskScheduler

    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
    
  2. 配置队列结构(capacity-scheduler.xml
    $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml中定义队列及资源分配:

    <property>
        <name>yarn.scheduler.capacity.root.queues</name>
        <value>prod,dev,test</value> <!-- 一级队列:生产、开发、测试 -->
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.prod.capacity</name>
        <value>70</value> <!-- 生产队列占总资源的70% -->
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.dev.capacity</name>
        <value>20</value> <!-- 开发队列占20% -->
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.test.capacity</name>
        <value>10</value> <!-- 测试队列占10% -->
    </property>
    <property>
        <name>yarn.scheduler.capacity.root.prod.maximum-capacity</name>
        <value>80</value> <!-- 生产队列最大资源限制(防止过度占用) -->
    </property>
    
  3. 配置队列权限(可选)
    通过yarn.scheduler.capacity.root.queue-name.acl_submit_applications控制队列提交权限,例如仅允许dev用户组提交到dev队列:

    <property>
        <name>yarn.scheduler.capacity.root.dev.acl_submit_applications</name>
        <value>dev-user-group</value>
    </property>
    
  4. 重启YARN服务
    修改配置后,重启YARN服务使配置生效:

    $HADOOP_HOME/sbin/stop-yarn.sh
    $HADOOP_HOME/sbin/start-yarn.sh
    
  5. 提交作业到指定队列
    使用mapreduce.job.queuename参数指定作业所属队列,例如将作业提交到prod队列:

    hadoop jar your-job.jar YourMainClass -Dmapreduce.job.queuename=prod
    

三、Fair Scheduler配置(可选)

  1. 修改yarn-site.xml(启用公平调度器)

    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    
  2. 配置公平调度策略(fair-scheduler.xml
    $HADOOP_HOME/etc/hadoop/fair-scheduler.xml中定义资源池及公平分配规则:

    <allocations>
        <pool name="realtime">
            <weight>3</weight> <!-- 权重(资源分配比例) -->
            <minResources>20% 10vcores</minResources> <!-- 最小资源保证 -->
            <maxResources>50% 30vcores</maxResources> <!-- 最大资源限制 -->
        </pool>
        <pool name="batch">
            <weight>1</weight>
            <minResources>10% 5vcores</minResources>
        </pool>
    </allocations>
    
  3. 重启YARN服务
    同样需要重启YARN服务使配置生效。

四、优化建议

  • 数据本地化优化:调整yarn.scheduler.capacity.node-locality-delay(默认40),增加本地化尝试次数,减少网络传输开销。
  • 资源隔离:通过yarn.scheduler.capacity.queue-name.user-limit-factor(默认1)限制单用户资源占用,避免单个用户独占队列资源。
  • 监控队列状态:通过YARN ResourceManager Web UI(默认http://resourcemanager-host:8088)查看队列资源使用情况,及时调整配置。

以上配置可根据实际业务需求调整队列比例、资源限制等参数,实现Hadoop集群的高效作业调度。

0