阅读量:50
Hadoop任务在Ubuntu上的调度方法
1. 前置准备:安装并配置Hadoop集群
在Ubuntu上调度Hadoop任务前,需先完成Hadoop的安装与基础配置。主要步骤包括:
- 下载并解压Hadoop(推荐版本3.x),配置环境变量(如
HADOOP_HOME、PATH); - 修改核心配置文件(
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml),设置HDFS地址、YARN资源管理器、MapReduce框架等参数; - 启动Hadoop集群(
start-dfs.sh启动HDFS,start-yarn.sh启动YARN),并通过jps命令验证进程(NameNode、DataNode、ResourceManager、NodeManager等)是否正常运行。
2. 基础调度方式:使用Cron定时执行Shell脚本
Cron是Ubuntu自带的定时任务工具,适合周期性执行Hadoop作业(如每日数据统计、批量ETL)。
- 步骤1:编写Hadoop作业Shell脚本
创建.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 - 步骤2:配置Cron定时任务
使用crontab -e命令编辑当前用户的Cron表,添加定时规则(如每天凌晨2点执行):
保存后,Cron会每分钟检查任务并自动执行。0 2 * * * /opt/scripts/hadoop_job.sh
3. 进阶调度方式:使用Oozie工作流调度
Oozie是Hadoop生态中的专业工作流调度工具,支持复杂任务依赖、条件判断和重试机制,适合企业级场景。
- 步骤1:安装Oozie
通过Ubuntu包管理器安装(sudo apt-get install oozie),或下载Oozie发行版并解压到指定目录。 - 步骤2:配置Oozie
修改oozie-site.xml文件,设置Oozie服务器地址、数据库连接(如MySQL)等参数;将Oozie的共享库复制到HDFS(oozie-setup.sh sharelib create -fs hdfs://localhost:9000/oozie)。 - 步骤3:编写工作流定义(XML)
创建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> - 步骤4:提交工作流
使用Oozie命令行工具提交工作流(oozie job -config job.properties -run),其中job.properties文件包含Oozie服务器地址、工作流路径等参数。
4. 调度策略配置:优化资源分配
Hadoop的调度策略决定了任务如何分配集群资源,Ubuntu上的Hadoop集群可通过修改mapred-site.xml配置以下策略:
- FIFO Scheduler(默认):先进先出,适合单用户或批处理作业,配置简单但无法满足多用户需求。
- Capacity Scheduler(推荐):多队列资源分配,每个队列有最低资源保障(如
mapred.capacity-scheduler.queue.default.capacity=50),支持队列内FIFO或优先级调度,适合多团队共享集群。 - Fair Scheduler:公平共享,所有作业动态分配资源(如
mapred.jobtracker.taskScheduler=org.apache.hadoop.mapred.FairScheduler),适合交互式作业和生产型作业混合场景。
配置完成后,需重启YARN服务(stop-yarn.sh && start-yarn.sh)使策略生效。
5. 监控与调试:确保调度正常
- 查看YARN任务状态:通过YARN ResourceManager Web界面(
http://)监控任务进度、资源使用情况;或使用命令行工具(:8088 yarn application -list查看所有任务,yarn application -status查看详情)。 - 查看Cron日志:通过
tail -f /var/log/syslog查看Cron执行日志,排查定时任务未执行的原因(如脚本权限问题、环境变量未设置)。 - 查看Oozie日志:Oozie的日志位于
/var/log/oozie目录,可通过oozie job -info查看工作流执行详情。