温馨提示×

Hadoop在Linux上的任务调度如何操作

小樊
41
2025-12-06 16:40:46
栏目: 智能运维

Hadoop在Linux上的任务调度操作指南

一 核心概念与调度器选择

  • Linux 上,Hadoop 的作业调度由 YARN 负责:由 ResourceManager 做全局资源管理与调度,NodeManager 管理单节点资源并启动 Container 运行任务,每个作业对应一个 ApplicationMaster 与 RM 协商资源并监控执行。调度策略可在 yarn-site.xml 中配置,常用有 FIFOCapacity Scheduler(多租户配额)与 Fair Scheduler(队列间公平分配)。提交作业可用 hadoop jaryarn jar,通过 ResourceManager Web UI(默认端口 8088) 查看状态与日志。

二 快速上手步骤

  • 配置与启动
    • $HADOOP_HOME/etc/hadoop 下编辑核心配置:
      • yarn-site.xml:设置 yarn.resourcemanager.hostnameyarn.nodemanager.aux-services=mapreduce_shuffle
      • mapred-site.xml:设置 mapreduce.framework.name=yarn
    • 启动集群:start-dfs.shstart-yarn.sh
  • 提交与监控
    • 提交作业:hadoop jar your-job.jar com.example.Main input outputyarn jar your-job.jar com.example.Main input output
    • 查看与监控:yarn application -listyarn application -status <app_id>,以及 http://:8088

三 配置调度器与队列

  • 选择调度器(示例为 Capacity Scheduler)
    • yarn-site.xml 指定:
      • yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
    • $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml 定义队列与容量(示例):
      • 队列 root 下创建 defaultetl 队列;
      • 设置 yarn.scheduler.capacity.root.queues=default,etl
      • 设置容量 yarn.scheduler.capacity.root.default.capacity=60yarn.scheduler.capacity.root.etl.capacity=40
      • 设置最大容量 yarn.scheduler.capacity.root.default.maximum-capacity=80yarn.scheduler.capacity.root.etl.maximum-capacity=100
      • 可选:为用户/组设置 ACL 与抢占策略。
  • 提交到指定队列:
    • 命令行:yarn jar your-job.jar ... -Dmapreduce.job.queuename=etl
    • 或在代码中通过 Configuration.set("mapreduce.job.queuename", "etl") 设置。

四 定时与依赖调度

  • Linux 层定时(简单场景)
    • 使用 crontab -e 定时执行脚本,脚本内调用 hadoop jaryarn jar;注意环境变量、日志重定向与幂等性(避免重复写入同一输出路径)。
  • Hadoop 生态工作流调度(复杂依赖与周期)
    • Apache Oozie:用 Workflow 定义任务依赖,用 Coordinator 实现基于时间的周期调度(如每日/每小时);适合 ETL、多作业编排。
    • Apache Airflow:以 DAG 编排 Hadoop 作业(通过 HiveOperator/SparkSubmitOperator/SSHOperator 等),具备丰富的依赖与监控能力。

五 常用命令与监控优化

  • 常用命令
    • 查看应用:yarn application -list
    • 查看状态:yarn application -status <app_id>
    • 查看日志:yarn logs -applicationId <app_id>
    • 访问 ResourceManager UI:http://:8088 查看调度、队列与容器资源使用。
  • 性能与稳定性优化
    • 资源与本地化:合理设置容器内存与 vcore(如 mapreduce.map.memory.mbmapreduce.reduce.memory.mb),提升数据本地化比例。
    • Shuffle 与压缩:调大 shuffle 缓冲、启用中间数据压缩(如 Snappy/LZO),减少 I/O 与网络。
    • 作业策略:合理使用 Combiner、减少落盘与传输数据量,必要时开启 推测执行 应对慢节点。

0