Hadoop作业在Ubuntu上的调度方法
在Ubuntu上调度Hadoop作业前,需完成以下基础配置:
/opt/hadoop),配置核心环境变量(HADOOP_HOME、PATH),并修改core-site.xml(设置HDFS地址,如fs.defaultFS=hdfs://localhost:9000)、hdfs-site.xml(设置副本数,如dfs.replication=1)、yarn-site.xml(配置ResourceManager主机,如yarn.resourcemanager.hostname=localhost、yarn.nodemanager.aux-services=mapreduce_shuffle)、mapred-site.xml(指定框架为YARN,如mapreduce.framework.name=yarn)等文件。start-dfs.sh启动HDFS服务,start-yarn.sh启动YARN服务,确保NameNode、DataNode、ResourceManager、NodeManager等进程正常运行。Hadoop作业提交的基本流程如下:
Mapper和Reducer逻辑,并编译打包为JAR文件(如hadoop-mapreduce-examples-3.3.6.jar为官方示例)。hadoop fs -put命令将作业JAR文件、输入数据上传至HDFS指定路径(如hadoop fs -put /local/path/job.jar /hdfs/input/job.jar、hadoop fs -put /local/path/input.txt /hdfs/input/input.txt)。hadoop jar命令提交作业,指定JAR路径、主类、输入输出路径(如hadoop jar /hdfs/input/job.jar com.example.WordCount /hdfs/input/input.txt /hdfs/output/result)。提交后,YARN会分配资源并调度任务执行。YARN提供了三种内置调度器,可根据需求配置:
default、production队列),每个队列可设置资源占比(如mapred.capacity-scheduler.queue.default.capacity=50表示default队列占50%资源)、用户作业限制(如mapred.capacity-scheduler.queue.default.maximum-am-resource-percent=0.2限制该队列同时运行的ApplicationMaster资源占比)。适用于多租户环境,保证队列资源配额。mapred.fairscheduler.allocation.file=/opt/hadoop/conf/fair-scheduler.xml指定配置文件,配置队列权重<property><name>queueA.weight</name><value>2</value></property>表示queueA权重为2,资源分配为queueA:queueB=2:1)。适用于需要兼顾不同作业需求的场景。对于周期性作业(如每日日志分析),可使用Ubuntu的cron工具实现自动化提交:
sudo apt-get update && sudo apt-get install cron安装,sudo service cron start启动服务(默认开机自启)。/home/user/hadoop_job.sh),包含Hadoop环境变量设置与作业提交命令(如export HADOOP_HOME=/opt/hadoop、$HADOOP_HOME/bin/hadoop jar /hdfs/input/job.jar com.example.WordCount /hdfs/input/input.txt /hdfs/output/result_$(date +\%Y\%m\%d),date +\%Y\%m\%d用于生成带日期的输出目录)。crontab -e编辑当前用户的cron表,添加调度规则(如0 2 * * * /home/user/hadoop_job.sh表示每日凌晨2点执行脚本)。对于复杂场景(如多作业依赖、工作流管理),可使用以下工具:
oozie-site.xml配置Oozie服务,使用oozie job -run命令提交工作流(如oozie job -config /home/user/job.properties -run)。dag = DAG('hadoop_job', schedule_interval='@daily', start_date=datetime(2025, 1, 1))),并提供Web界面监控作业状态。