在Linux环境下调度Hadoop作业前,需先搭建并配置好Hadoop集群(包括HDFS和YARN)。核心配置文件集中在$HADOOP_HOME/etc/hadoop目录下,需重点调整以下文件:
fs.defaultFS、YARN资源管理器地址yarn.resourcemanager.hostname);yarn.nodemanager.resource.memory-mb设置节点可用内存);mapreduce.framework.name设为yarn)。
配置完成后,启动HDFS(start-dfs.sh)和YARN(start-yarn.sh)服务,确保集群正常运行。Hadoop作业需通过hadoop jar或yarn jar命令提交至YARN集群。例如,执行Hadoop自带的WordCount示例:
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples.jar wordcount /input/path /output/path
提交后,ResourceManager会接收请求,NodeManager启动容器运行Map/Reduce任务,ApplicationMaster负责监控任务进度并与ResourceManager协调资源。
YARN支持三种核心调度器,需根据集群场景选择:
yarn-site.xml(默认启用)。default、queue1),每个队列分配固定资源容量(如yarn.scheduler.capacity.root.default.capacity=50%)。同一队列内采用FIFO策略,适合多团队共享集群。mapred.fairscheduler.allocation.file指定分配文件),适合多用户交互式作业。通过allocations.xml配置队列的最小资源保障(minMaps/minReduces)和权重(weight)。对于复杂作业(如ETL pipeline、依赖作业),需借助工作流调度工具实现自动化管理:
crontab -e添加任务(如0 2 * * * /path/to/hadoop_job.sh)。oozie-site.xml并部署作业描述文件(workflow.xml)。http://resourcemanager-host:8088访问,可查看集群资源使用情况、作业列表、任务日志等。yarn application -list查看运行中的作业,yarn application -status <app_id>查看作业详情。yarn.scheduler.minimum-allocation-mb/maximum-allocation-mb),避免资源浪费。mapreduce.map.memory.mb和mapreduce.reduce.memory.mb参数;对于CPU密集型作业,调整yarn.nodemanager.resource.cpu-vcores。queue1.capacity=30%),避免单个队列占用过多资源;在Fair Scheduler中,设置userMaxJobsDefault限制用户并发作业数,防止资源抢占。