Linux系统中Hadoop通过YARN(Yet Another Resource Negotiator)进行资源调度,核心组件及流程如下:
-
核心组件
- ResourceManager(RM):全局资源管理器,负责接收作业请求、调度资源并监控集群资源状态。
- NodeManager(NM):管理单个节点资源,执行RM分配的任务,汇报资源使用情况。
- ApplicationMaster(AM):为每个作业申请资源、协调任务执行,与NM交互管理容器。
- Container:资源分配的基本单位,封装CPU、内存等资源,用于执行具体任务。
-
调度策略
- FIFO(先进先出):按作业提交顺序调度,简单但无法满足多用户需求,适用于低负载场景。
- Capacity Scheduler:支持多队列,为队列分配固定资源,支持资源抢占,适合多用户共享集群。
- Fair Scheduler:动态分配资源,确保每个作业获得公平份额,支持作业优先级和资源预留,适用于混合负载场景。
-
调度流程
- 用户提交作业至RM,RM根据调度策略选择合适的NM分配容器。
- NM启动容器并运行作业组件(如MapTask/ReduceTask),监控资源使用情况。
- 作业完成后,RM释放资源,支持动态调整队列资源或任务优先级。
-
配置与优化
- 通过修改
yarn-site.xml配置调度器类型(如yarn.resourcemanager.scheduler.class)。
- 监控工具(如Ambari、Ganglia)可实时查看资源使用情况,辅助优化调度策略。
参考来源: