温馨提示×

Ubuntu Hadoop 任务怎么调度

小樊
41
2025-10-14 12:01:07
栏目: 智能运维

Ubuntu下Hadoop任务调度的实现步骤

1. 准备Hadoop运行环境

在Ubuntu上调度Hadoop任务前,需完成Hadoop基础环境的配置。主要包括:安装Java(sudo apt install openjdk-11-jdk)、创建Hadoop专用用户(sudo useradd -m hadoop -s /bin/bash)、配置SSH免密登录(ssh-keygen -t rsa并分发公钥至本机)、下载并解压Hadoop(如tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/)。这些步骤是Hadoop正常运行的前提。

2. 配置Hadoop核心参数

Hadoop的任务调度依赖核心配置文件的正确设置,需修改以下文件:

  • core-site.xml:设置HDFS的默认文件系统地址,例如<property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
  • hdfs-site.xml:配置HDFS的副本数(测试环境设为1)及数据存储目录,例如<property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop/data/namenode</value></property>
  • mapred-site.xml:指定MapReduce框架为YARN(需将模板文件重命名为mapred-site.xml后编辑),例如<property><name>mapreduce.framework.name</name><value>yarn</value></property>
  • yarn-site.xml:配置YARN的资源管理器主机及Shuffle服务,例如<property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce.shuffle</value></property>

3. 启动Hadoop集群

配置完成后,启动Hadoop服务以激活资源管理与任务调度:

  • 启动HDFS:执行start-dfs.sh,启动NameNode(管理HDFS元数据)和DataNode(存储数据);
  • 启动YARN:执行start-yarn.sh,启动ResourceManager(全局资源管理)和NodeManager(节点资源管理);
  • 验证进程:通过jps命令查看是否包含NameNode、DataNode、ResourceManager、NodeManager等进程,确保集群正常运行。

4. 使用YARN内置调度器

YARN是Hadoop 2.0+的默认资源管理框架,提供三种内置调度器,可根据场景选择:

  • FIFO Scheduler(先进先出):按作业提交顺序调度,简单但无法共享资源,适合单用户或对实时性要求低的场景;
  • Capacity Scheduler(容量调度):支持多队列(如defaulthigh_priority),每个队列分配固定资源比例(如yarn.scheduler.capacity.root.default.capacity=50),确保队列间资源隔离,适合多用户共享集群;
  • Fair Scheduler(公平调度):动态分配资源,使所有作业公平共享集群资源(如小作业快速完成),适合多作业并行且需要公平性的场景。
    调度器配置需修改yarn-site.xml中的yarn.scheduler.type属性(如<property><name>yarn.scheduler.type</name><value>fair</value></property>)。

5. 提交与监控Hadoop任务

  • 提交任务:使用hadoop jar命令提交MapReduce作业,例如hadoop jar /path/to/your-job.jar com.example.YourJobClass input_path output_pathinput_path为HDFS输入目录,output_path为HDFS输出目录,需提前创建且不存在);
  • 监控任务
    • Web界面:通过ResourceManager的Web界面(默认http://localhost:8088)查看任务状态、资源使用情况及日志;
    • 命令行:使用yarn application -list查看所有运行中的任务,yarn application -status <application_id>查看特定任务的详细信息。

6. 高级调度:集成Oozie或Airflow

对于复杂任务(如多步骤ETL、周期性任务),可使用Apache OozieApache Airflow等调度工具:

  • Oozie:配置Oozie的oozie-site.xml文件(设置数据库连接、ResourceManager地址),启动Oozie服务(sudo service oozie start),通过命令行或Web界面提交Workflow(定义任务流程的XML文件);
  • Airflow:安装Airflow(pip install apache-airflow),编写DAG(有向无环图)文件(Python脚本,定义任务依赖与调度时间),通过Airflow的Web界面(默认http://localhost:8080)管理任务调度。

0