1. 前置准备:安装与配置Hadoop集群
在Debian系统上实现Hadoop任务调度前,需先完成Hadoop基础环境的搭建。具体步骤包括:下载Hadoop(如3.3.1版本)并解压至/usr/local/,配置环境变量(HADOOP_HOME、PATH);编辑核心配置文件(core-site.xml设置HDFS URI、hdfs-site.xml配置副本数、mapred-site.xml指定YARN为框架、yarn-site.xml配置ResourceManager主机),并通过start-dfs.sh、start-yarn.sh启动HDFS和YARN集群。
2. 使用YARN自带调度器进行基础任务调度
YARN(Yet Another Resource Negotiator)是Hadoop的资源管理核心,其内置三种调度器可满足不同场景需求:
default队列占80%资源),支持多租户并行,适合生产环境;mapred-site.xml,设置mapreduce.jobtracker.taskScheduler属性(如org.apache.hadoop.mapred.FairScheduler),重启YARN使配置生效。3. 通过命令行提交与监控任务
使用hadoop jar命令提交MapReduce作业,语法为:
hadoop jar /path/to/your-job.jar com.yourcompany.YourJobClass input_path output_path
提交后,可通过以下命令监控任务状态:
yarn application -list:查看所有运行中/已完成的作业;yarn application -status <application_id>:查看指定作业的详细信息(如进度、资源使用);http://<ResourceManager-IP>:8088):直观展示集群资源、作业列表及单个作业的执行详情(如Container状态、日志链接)。4. 使用Cron实现定期任务调度
若需定期执行Hadoop任务(如每日ETL),可借助Linux系统的Cron工具。编辑Cron表(crontab -e),添加定时规则(如每天午夜执行):
0 0 * * * /path/to/hadoop jar /path/to/your-job.jar com.yourcompany.YourJobClass /input/path /output/path >> /path/to/logfile.log 2>&1
该配置会将任务输出和错误日志重定向至指定文件,便于后续查看。
5. 使用Apache Oozie进行复杂工作流调度
对于需要多步骤依赖(如“MapReduce→Hive→Spark”)的复杂任务,可使用Oozie工作流调度系统。步骤如下:
/usr/local/,配置环境变量(OOZIE_HOME、PATH);oozie-site.xml,设置oozie.service.HadoopAccessorService.hadoop.configurations指向Hadoop配置目录;map-reduce、hive)及依赖关系(如<ok to="hive-node"/>);oozie job -config job.properties -run命令提交,Oozie会自动管理任务执行顺序及失败重试。6. 使用Apache Airflow实现高级调度
对于需要复杂依赖(如跨任务、跨系统)的场景,可使用Airflow。步骤如下:
pip install apache-airflow安装,初始化数据库(airflow db init);airflow.cfg,设置调度器(如LocalScheduler)、Web服务器端口;BashOperator调用Hadoop命令)、依赖关系(如task1 >> task2)及调度间隔(如schedule_interval='@daily');airflow webserver(Web界面)和airflow scheduler(调度器),通过Web界面管理DAG。