Linux中Hadoop任务调度基于YARN(Yet Another Resource Negotiator)实现,核心组件包括ResourceManager、NodeManager、ApplicationMaster和容器(Container),调度流程及策略如下:
-
调度流程:
- 用户通过客户端提交作业到ResourceManager。
- ResourceManager的调度器根据策略分配资源(Container)给ApplicationMaster。
- ApplicationMaster在分配的Container中启动任务,监控执行状态并报告进度。
- 任务完成后释放资源。
-
主要调度器:
- FIFO(先进先出):按作业提交顺序调度,简单但资源利用率低,适合批处理场景。
- Capacity Scheduler(容量调度器):支持多队列,为队列分配固定资源,允许队列间资源临时借用,适合多用户共享集群。
- Fair Scheduler(公平调度器):动态分配资源,确保各作业/用户公平共享集群,支持资源池和优先级,适合多作业并发场景。
-
资源分配机制:
- 调度器以Container为单位分配资源,考虑数据本地性、作业优先级、队列限制等因素。
- 可通过配置文件(如
yarn-site.xml
)调整队列容量、优先级等参数优化调度。
-
高级功能:
- 支持作业依赖管理、定时任务(如Oozie、Azkaban工具)。
- 动态资源分配可应对负载变化,提升集群利用率。