温馨提示×

Hadoop在Ubuntu上的任务调度

小樊
44
2025-11-27 03:18:44
栏目: 智能运维

在 Ubuntu 上,Hadoop 的作业调度由 YARN 负责资源管理与调度,配合队列策略与作业提交工具实现从单次作业到定时工作流的完整调度能力。

核心概念与组件

  • YARN 架构:由 ResourceManager(全局资源与调度)与 NodeManager(单节点资源与容器管理)组成,是 Hadoop 2.x/3.x 的任务调度核心。
  • 调度器类型
    • Fair Scheduler:为应用提供公平的资源份额,适合多用户共享集群。
    • Capacity Scheduler:按队列划分资源配额,适合多租户与业务分级。
  • 作业提交与监控:使用命令行 hadoop jaryarn jar 提交;通过 **YARN ResourceManager Web UI(默认端口 8088)**查看应用状态与资源使用。

快速上手 单机或伪分布式

  • 配置关键文件($HADOOP_HOME/etc/hadoop):
    • core-site.xml:设置默认文件系统,例如 fs.defaultFS=hdfs://localhost:9000
    • hdfs-site.xml:副本数,例如 dfs.replication=1(单机/伪分布式)。
    • yarn-site.xml:指定 yarn.resourcemanager.hostname=localhost,启用 yarn.nodemanager.aux-services=mapreduce_shuffle
    • mapred-site.xml:设置 mapreduce.framework.name=yarn
  • 启动集群:执行 start-dfs.shstart-yarn.sh
  • 提交示例:
    • MapReduce 作业:hadoop jar /path/to/your-job.jar com.example.YourJobClass input output
    • 或:yarn jar /path/to/your-job.jar com.example.YourJobClass input output
  • 监控与运维:
    • 查看应用:yarn application -list
    • 查看状态:yarn application -status <application_id>
    • Web UI:http://:8088

队列与调度器配置

  • 启用公平调度器(Fair Scheduler):在 yarn-site.xml 设置
    • yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
    • $HADOOP_HOME/etc/hadoop/fair-scheduler.xml 定义队列与配额,例如:
      • 根队列 root 下创建业务队列 root.queue1,设置权重、最小/最大资源与 ACL;
      • 示例关键片段:
        • 90000mb,10vcores 90000mb,100vcores 50 2.0 fair ubuntu,ubuntu ubuntu,ubuntu
        • 30
        • 5
  • 提交到指定队列:
    • 命令行:hadoop jar … -Dmapred.job.queue.name=root.queue1 …
  • 验证:并发提交多个作业时,调度器会按队列配额与权重分配容器,未满足配额的作业将排队等待。

定时与跨作业编排

  • Oozie:Hadoop 生态的工作流与协调服务,适合有依赖关系的 MapReduce/Hive/Spark 作业编排与定时调度。
    • 基本流程:安装与配置 oozie-site.xml,启动服务,使用 Oozie CLI 或 Web Console 提交工作流。
  • Apache Airflow:通用工作流编排平台,可通过 Hadoop/Hive/Spark 插件 提交与监控 Hadoop 任务,适合复杂依赖与数据管道。
  • Cron + Shell:轻量级方案,用 crontab 定时执行提交脚本(如定期跑 hadoop jaryarn jar)。

性能与稳定性优化要点

  • 数据本地化:优先在计算节点本地执行任务,减少网络开销。
  • 资源配置:合理设置容器与任务资源,如 mapreduce.map.memory.mbmapreduce.reduce.memory.mb,避免 OOM 与资源争用。
  • Shuffle 与压缩:调整 Shuffle 内存与合并策略,使用 Snappy/LZO 压缩中间与输出数据,降低 I/O 与网络。
  • HDFS 参数:结合数据规模与访问模式调整 块大小副本因子 与写缓冲。
  • 高级特性:启用 推测执行(Speculative Execution) 缓解慢节点影响;必要时考虑 Tez/Spark 替代传统 MapReduce 提升迭代计算性能。
  • 监控与持续调优:结合 Ganglia、Ambari 等工具观测指标并迭代参数。

0