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界面监控作业状态。