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

CentOS Hadoop作业调度怎么设置

时间2025-10-22 09:27:03发布访客分类主机资讯浏览481
导读:CentOS下Hadoop作业调度的设置方法 1. 选择作业调度器 Hadoop支持多种作业调度器,需根据集群需求选择: FIFO Scheduler(先进先出):默认调度器,按作业提交顺序执行,适合单用户或小集群,但无法处理多租户资源竞...

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.address<
        /name>
        
      <
        value>
        centos-rm:8032<
        /value>
         <
        !-- 替换为实际主机名/IP -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.resourcemanager.scheduler.address<
        /name>
        
      <
        value>
        centos-rm:8030<
        /value>
         <
        !-- 调度器通信地址 -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.resourcemanager.webapp.address<
        /name>
        
      <
        value>
        centos-rm:8088<
        /value>
         <
        !-- ResourceManager Web UI -->
        
    <
        /property>
        
    
  • NodeManager资源限制:设置每个NodeManager可用的物理内存和虚拟CPU,如:
    <
        property>
        
      <
        name>
        yarn.nodemanager.resource.memory-mb<
        /name>
        
      <
        value>
        8192<
        /value>
         <
        !-- 总物理内存(MB) -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.nodemanager.resource.cpu-vcores<
        /name>
        
      <
        value>
        4<
        /value>
         <
        !-- 总虚拟CPU核心数 -->
        
    <
        /property>
        
    
  • 调度器配置:若使用CapacityScheduler,需在capacity-scheduler.xml中定义队列资源比例,如:
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.default.capacity<
        /name>
        
      <
        value>
        50<
        /value>
         <
        !-- default队列占50%资源 -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.default.maximum-capacity<
        /name>
        
      <
        value>
        100<
        /value>
         <
        !-- 最大可扩展至100% -->
        
    <
        /property>
        
    

配置完成后,重启YARN服务使更改生效:stop-yarn.sh & & start-yarn.sh

3. 配置MapReduce作业参数

MapReduce作业的资源分配需在mapred-site.xml中配置,关键参数包括:

  • 内存分配:设置Map/Reduce任务的内存限制,避免资源浪费或OOM,如:
    <
        property>
        
      <
        name>
        mapreduce.map.memory.mb<
        /name>
        
      <
        value>
        2048<
        /value>
         <
        !-- Map任务内存(MB) -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        mapreduce.reduce.memory.mb<
        /name>
        
      <
        value>
        4096<
        /value>
         <
        !-- Reduce任务内存(MB) -->
        
    <
        /property>
        
    
  • CPU分配:设置Map/Reduce任务的虚拟CPU核心数,如:
    <
        property>
        
      <
        name>
        mapreduce.map.cpu.vcores<
        /name>
        
      <
        value>
        2<
        /value>
         <
        !-- Map任务虚拟CPU -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        mapreduce.reduce.cpu.vcores<
        /name>
        
      <
        value>
        4<
        /value>
         <
        !-- Reduce任务虚拟CPU -->
        
    <
        /property>
        
    
  • Shuffle服务:配置MapReduce Shuffle服务的实现类,确保Reduce任务能正确获取Map任务的输出,如:
    <
        property>
        
      <
        name>
        mapreduce.shuffle.class<
        /name>
        
      <
        value>
        org.apache.hadoop.mapred.ShuffleHandler<
        /value>
        
    <
        /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),实时查看作业运行状态和资源使用情况。

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


若转载请注明出处: CentOS Hadoop作业调度怎么设置
本文地址: https://pptw.com/jishu/732008.html
如何提升CentOS HDFS稳定性 CentOS上HBase如何监控告警

游客 回复需填写必要信息