Hadoop在Ubuntu上的任务调度主要依赖YARN(Yet Another Resource Negotiator),其核心机制如下:
-
调度器类型
- FIFO调度器:按作业提交顺序调度,先到先得,适用于简单场景。
- Capacity Scheduler:支持多队列资源分配,可设置队列容量、优先级及弹性资源分配,适合多用户共享集群。
- Fair Scheduler:动态分配资源,确保各作业公平共享集群资源,支持抢占机制,适用于混合任务场景。
-
调度流程
- 作业提交:用户通过
hadoop jar
命令提交任务至YARN,ResourceManager接收后初始化资源。
- 资源分配:ResourceManager根据调度策略为作业分配资源,生成ApplicationMaster管理任务执行。
- 任务执行:ApplicationMaster将任务分解为子任务(如Map/Reduce),调度到NodeManager节点的容器中运行。
- 监控与容错:ResourceManager实时监控任务状态,失败时重新调度,确保任务完成。
-
配置方式
- 通过修改
yarn-site.xml
配置文件指定调度器类型(如yarn.resourcemanager.scheduler.class
参数)。
- Capacity Scheduler和Fair Scheduler需额外配置队列资源、优先级等参数。
-
工具支持
- 可结合Oozie、Azkaban等工具实现复杂任务调度(如工作流、定时任务)。
- 通过YARN Web界面监控任务进度、资源使用情况。
参考来源: