在Ubuntu上调度Hadoop任务前,需先完成Hadoop的安装与基础配置。主要步骤包括:
HADOOP_HOME、PATH);core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml),设置HDFS地址、YARN资源管理器、MapReduce框架等参数;start-dfs.sh启动HDFS,start-yarn.sh启动YARN),并通过jps命令验证进程(NameNode、DataNode、ResourceManager、NodeManager等)是否正常运行。Cron是Ubuntu自带的定时任务工具,适合周期性执行Hadoop作业(如每日数据统计、批量ETL)。
.sh文件(如hadoop_job.sh),内容包含Hadoop命令(如提交MapReduce作业、运行Hive查询),并设置执行权限(chmod +x hadoop_job.sh)。示例脚本:#!/bin/bash
# 设置Hadoop环境变量
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
# 执行MapReduce作业(替换为实际JAR路径和输入输出目录)
$HADOOP_HOME/bin/hadoop jar /opt/hadoop/examples.jar wordcount /input/data /output/result
# 将结果输出到日志文件
echo "Job executed at $(date)" >> /var/log/hadoop_job.log
crontab -e命令编辑当前用户的Cron表,添加定时规则(如每天凌晨2点执行):0 2 * * * /opt/scripts/hadoop_job.sh
保存后,Cron会每分钟检查任务并自动执行。Oozie是Hadoop生态中的专业工作流调度工具,支持复杂任务依赖、条件判断和重试机制,适合企业级场景。
sudo apt-get install oozie),或下载Oozie发行版并解压到指定目录。oozie-site.xml文件,设置Oozie服务器地址、数据库连接(如MySQL)等参数;将Oozie的共享库复制到HDFS(oozie-setup.sh sharelib create -fs hdfs://localhost:9000/oozie)。workflow.xml文件,定义任务流程(如MapReduce作业→Hive查询)。示例:<workflow-app name="wordcount-workflow" xmlns="uri:oozie:workflow:0.5">
<start to="wordcount-job"/>
<action name="wordcount-job">
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property><name>mapreduce.job.jar</name><value>/opt/hadoop/examples.jar</value></property>
<property><name>mapreduce.job.inputdir</name><value>/input/data</value></property>
<property><name>mapreduce.job.outputdir</name><value>/output/result</value></property>
</configuration>
</map-reduce>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Workflow failed!</message>
</kill>
<end name="end"/>
</workflow-app>
oozie job -config job.properties -run),其中job.properties文件包含Oozie服务器地址、工作流路径等参数。Hadoop的调度策略决定了任务如何分配集群资源,Ubuntu上的Hadoop集群可通过修改mapred-site.xml配置以下策略:
mapred.capacity-scheduler.queue.default.capacity=50),支持队列内FIFO或优先级调度,适合多团队共享集群。mapred.jobtracker.taskScheduler=org.apache.hadoop.mapred.FairScheduler),适合交互式作业和生产型作业混合场景。stop-yarn.sh && start-yarn.sh)使策略生效。http://<resourcemanager-ip>:8088)监控任务进度、资源使用情况;或使用命令行工具(yarn application -list查看所有任务,yarn application -status <app_id>查看详情)。tail -f /var/log/syslog查看Cron执行日志,排查定时任务未执行的原因(如脚本权限问题、环境变量未设置)。/var/log/oozie目录,可通过oozie job -info <job_id>查看工作流执行详情。