温馨提示×

Hadoop任务调度在Linux怎么做

小樊
45
2025-11-14 23:26:19
栏目: 智能运维

Linux上Hadoop任务调度的完整方案

一 核心概念与组件

  • Linux 环境中,Hadoop 的任务调度由 YARN(Yet Another Resource Negotiator) 负责,核心组件包括:
    • ResourceManager:全局资源管理与调度入口。
    • NodeManager:单节点资源管理与容器(Container)生命周期管理。
    • ApplicationMaster(AM):每个作业一个 AM,与 RM 协商资源、监控作业进度。
    • Container:资源分配的基本单位(封装内存、CPU 等)。
    • 调度策略:支持 FIFOCapacity Scheduler(容量调度器)Fair Scheduler(公平调度器)

二 快速上手 提交与监控

  • 提交作业
    • 使用 hadoop jaryarn jar 提交 MapReduce 作业:
      • 示例:hadoop jar my-job.jar com.example.MyJob input output
      • 示例:yarn jar my-job.jar com.example.MyJob input output
  • 常用监控
    • YARN Web UI:访问 http://<ResourceManager主机>:8088 查看应用与资源。
    • 命令行:
      • 查看应用:yarn application -list
      • 查看日志:yarn logs -applicationId <app_id>
      • 查看节点:yarn node -list
  • 关键说明
    • 提交后由 ResourceManager 分配首个容器启动 ApplicationMaster,再由 AM 向 RM 申请更多容器完成 Map/Reduce 任务。

三 配置YARN调度器

  • 配置文件位置:$HADOOP_HOME/etc/hadoop/yarn-site.xml
  • 选择调度器(示例为容量调度器)
    • 设置调度器类:
      • <property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value></property>
    • 指定队列配置:在 capacity-scheduler.xml 中定义队列、容量、ACL 等。
  • 公平调度器(Fair Scheduler)
    • 使用类:org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
    • 通过 fair-scheduler.xml 配置队列与权重/公平策略。
  • 生效方式
    • 修改后同步到集群各节点,重启 ResourceManager(必要时滚动重启),通过 Web UI 验证调度器与队列。

四 定时与依赖调度 工作流编排

  • Linux 层定时
    • 使用 crontab 定期触发脚本(适合简单周期任务):
      • 编辑:crontab -e
      • 示例:*/5 * * * * /opt/scripts/run_etl.sh(每 5 分钟执行)
  • Hadoop 生态工作流
    • Apache Oozie:支持复杂依赖与工作流,提供 Web 控制台与定时能力。
    • Apache Airflow:以 DAG 编排任务,适合跨系统依赖与数据管道。
    • Azkaban:轻量级工作流调度,界面化配置与依赖管理。

五 性能与资源调优要点

  • 资源配置
    • 合理设置容器与任务内存:如 mapreduce.map.memory.mbmapreduce.reduce.memory.mb,避免 OOM 与资源浪费。
    • 根据作业特性设置 Map/Reduce 数量、并发度与 JVM 参数。
  • 数据本地化与 Shuffle
    • 优先 数据本地化 执行,减少网络开销;优化 Shuffle 缓冲区与压缩(如 Snappy/LZO)。
  • 作业特性
    • 合理使用 Combiner、减少落盘与网络传输;启用 推测执行 缓解慢节点影响。
  • 监控与迭代
    • 结合 YARN Web UI 与监控工具(如 Ganglia/Ambari)持续观测与调优。

0