首页主机资讯Hadoop作业如何在Ubuntu上调度

Hadoop作业如何在Ubuntu上调度

时间2025-11-25 12:35:05发布访客分类主机资讯浏览302
导读:在 Ubuntu 上调度 Hadoop 作业的实用方案 一、调度层次与适用场景 系统级定时:使用 Cron 或 systemd timer 在 Ubuntu 上定时触发脚本,脚本内部用命令行提交 Hadoop 作业。优点是简单通用;缺点是...

在 Ubuntu 上调度 Hadoop 作业的实用方案

一、调度层次与适用场景

  • 系统级定时:使用 Cronsystemd timer 在 Ubuntu 上定时触发脚本,脚本内部用命令行提交 Hadoop 作业。优点是简单通用;缺点是依赖 shell、缺少依赖管理与可视化。
  • 工作流编排:使用 Apache Oozie(重量级、基于 XML、适合 ETL、支持时间/数据触发)或 Azkaban(轻量级、基于 Properties/YAML、依赖管理清晰、Web UI 友好)。
  • 数据平台调度:使用 Apache Airflow(可编程 DAG、丰富的 Operator、与 Hadoop 生态集成良好)。
  • 集群资源调度:在 YARN 层选择 FIFOFair SchedulerCapacity Scheduler,实现队列隔离、权重与抢占,保证多用户/多业务公平或按容量使用资源。

二、快速上手路径

  • 方案A(系统级定时 + 命令行)
    1. 准备作业脚本 run_wordcount.sh:
    #!/usr/bin/env bash
    set -e
    INPUT=/data/input/$(date -d "yesterday" +%Y-%m-%d)
    OUTPUT=/data/output/wordcount/$(date +%Y-%m-%d)
    hadoop fs -rm -r -f "$OUTPUT"
    yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount "$INPUT" "$OUTPUT"
    
    1. 赋予执行权限并加入定时:
    chmod +x run_wordcount.sh
    # 每天 02:00 执行
    (crontab -l 2>
        /dev/null;
         echo "0 2 * * * /opt/scripts/run_wordcount.sh >
        >
         /var/log/hadoop/wordcount.log 2>
        &
        1") | crontab -
    
  • 方案B(工作流编排 Azkaban 最小可用)
    1. 安装与启动:准备 JDK 1.8+、关系型数据库(如 MySQL),构建 Azkaban(Gradle 构建),选择 solo-servertwo/multiple-executor 模式并初始化数据库。
    2. 定义作业流:创建项目与 .job 文件(示例 job1.job):
    type=command
    command=/opt/scripts/run_wordcount.sh
    
    1. 打包上传(.zip),在 Web UI 配置调度(如每日 02:00),上线运行并查看日志与告警。

三、YARN 队列与资源调度配置

  • 使用 Capacity Scheduler(示例:创建 root.hive 队列,额定 60%,上限 80%):
    $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml 增加:
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.capacity<
        /name>
        
      <
        value>
        60<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.user-limit-factor<
        /name>
        
      <
        value>
        1<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.maximum-capacity<
        /name>
        
      <
        value>
        80<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.state<
        /name>
        
      <
        value>
        RUNNING<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.acl_submit_applications<
        /name>
        
      <
        value>
        *<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.capacity.root.hive.acl_administer_queue<
        /name>
        
      <
        value>
        *<
        /value>
        
    <
        /property>
        
    
    分发配置后执行:
    yarn rmadmin -refreshQueues
    
    提交作业到指定队列:
    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \
      wordcount -D mapreduce.job.queuename=hive /input /output
    
  • 使用 Fair Scheduler:在 yarn-site.xml 指定调度器与配置文件:
    <
        property>
        
      <
        name>
        yarn.resourcemanager.scheduler.class<
        /name>
        
      <
        value>
        org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        yarn.scheduler.fair.allocation.file<
        /name>
        
      <
        value>
        /etc/hadoop/fair-scheduler.xml<
        /value>
        
    <
        /property>
        
    
    fair-scheduler.xml 定义队列、权重、最小/最大资源、抢占等策略,然后分发并重启 ResourceManager 或刷新队列。

四、监控与运维要点

  • 作业与资源监控:使用 YARN ResourceManager Web UI(默认 8088 端口)查看应用状态、日志与资源使用;必要时结合 GangliaAmbariCloudera Manager 做更细粒度监控。
  • 队列与权限:通过 Capacity Scheduler 的 ACL 控制提交与管理权限;为关键队列设置合理的 maximum-application-lifetimedefault-application-lifetime,避免长期占用。
  • 调度器选择:多用户共享且强调公平时使用 Fair Scheduler;需要严格容量配额与层级队列时使用 Capacity Scheduler;单任务顺序执行可用 FIFO

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


若转载请注明出处: Hadoop作业如何在Ubuntu上调度
本文地址: https://pptw.com/jishu/755449.html
如何在Ubuntu上配置Hadoop网络 如何解决Ubuntu上Hadoop启动失败问题

游客 回复需填写必要信息