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。