温馨提示×

CentOS Hadoop任务调度如何进行

小樊
34
2026-01-08 06:51:52
栏目: 智能运维

CentOS上Hadoop任务调度的核心机制与位置

  • Hadoop在CentOS上的作业调度由**YARN(Yet Another Resource Negotiator)**负责,核心组件包括:
    • ResourceManager:全局资源统筹与调度。
    • NodeManager:单节点资源监控与容器(Container)管理。
    • ApplicationMaster:每个应用的管理器,向RM申请资源并与NM协作运行任务。
    • Container:对CPU、内存等资源的隔离单位。
  • 作业调度与应用执行流程:应用向ResourceManager申请资源 → RM按调度策略分配 → NodeManager创建容器运行任务 → 任务结束回收资源。上述机制是Hadoop 2.x/3.x在CentOS环境下的通用架构。

调度器类型与选择

  • FIFO Scheduler:先进先出,简单但不适合多用户/多任务并发,易出现“大作业饿死小作业”。
  • Capacity Scheduler:按“队列”划分资源配额,适合多租户/多部门共享集群,强调资源隔离与保障。
  • Fair Scheduler:按“池/队列”动态均衡资源,强调公平共享与最小资源保障,适合多用户交互式与批处理混合场景。
  • 选择建议:
    • 单团队、负载简单 → FIFO
    • 多部门共享、需配额与隔离 → Capacity
    • 多用户、强调公平与弹性 → Fair

在CentOS上配置调度器的实操步骤

  • 基础前提
    • 安装JDK、配置SSH免密,部署Hadoop并配置好core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
    • 启动HDFS与YARN:start-dfs.sh、start-yarn.sh;
    • 常用验证:hdfs dfsadmin -report、yarn node -list;
    • 访问ResourceManager Web UI:默认端口8088
  • 启用Capacity Scheduler(示例)
    1. yarn-site.xml指定调度器类:

      yarn.resourcemanager.scheduler.class
      org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
    2. capacity-scheduler.xml定义队列与容量:

      yarn.scheduler.capacity.root.queues
      default,prod,dev


      yarn.scheduler.capacity.root.prod.capacity
      70


      yarn.scheduler.capacity.root.dev.capacity
      30
    3. 同步配置到所有节点并重启YARN。
  • 启用Fair Scheduler(示例)
    1. yarn-site.xml指定调度器类:

      yarn.resourcemanager.scheduler.class
      org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
    2. 提供fair-scheduler.xml(定义池/队列、最小/最大份额、权重等);
    3. 同步配置并重启YARN。
  • 提交作业到指定队列(示例)
    • MapReduce:
      hadoop jar hadoop-mapreduce-examples.jar wordcount /input /output -D mapreduce.job.queuename=dev
    • Spark on YARN:
      spark-submit --master yarn --queue dev --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.0.jar 10
    • 注:队列名需与调度器配置一致。

常用监控与运维命令

  • 查看节点与资源:
    • yarn node -list
    • yarn rmadmin -getGroups (查看用户组配额)
  • 查看应用与日志:
    • yarn application -list -appStates ALL
    • yarn logs -applicationId <app_id>
    • 历史任务:配置并访问JobHistory Server(常见端口19888)以查看已完成作业详情。
  • Web界面:
    • ResourceManager:http://:8088
    • JobHistory:http://:19888

性能与稳定性优化要点

  • 数据本地化优先:尽量让计算靠近数据,减少跨节点网络传输。
  • 合理设置容器资源:根据作业与节点规格配置yarn.nodemanager.resource.memory-mbyarn.nodemanager.resource.cpu-vcores,并匹配Map/Reduce内存参数,避免OOM或资源闲置。
  • 存储策略与I/O:启用HDFS存储策略(如HOT/WARM/COLD)分层存储;在CentOS上结合磁盘类型选择合适的I/O调度器(如deadline/noop/bfq)以匹配负载特性。
  • 网络与系统参数:适当增大TCP缓冲区、优化网络延迟;持续通过RM/JobHistory UI与命令行监控瓶颈并迭代调优。

0