阅读量:3
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.jarname><value>/opt/hadoop/examples.jarvalue>property> <property><name>mapreduce.job.inputdirname><value>/input/datavalue>property> <property><name>mapreduce.job.outputdirname><value>/output/resultvalue>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查看工作流执行详情。
以上就是关于“Hadoop 任务在 Ubuntu 上如何调度”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm