Yarn资源调度器

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作平台,MapReduce等运算程序相当于运行于操作系统之上的应用程序。
Hadoop-Yarn认识 - 图1
计算模型层出不穷,这么多计算模型如何协同工作、如何做好资源管理,就显得至关重要了。于是,在 MapReduce 基础上演变出了 Yarn 这个资源管理器,它的出现主要就是为了解决原始 Hadoop 扩展性较差、不支持多种计算模型的问题。
在 YARN 中,支持 CPU 和内存两种资源管理,资源管理由 ResourceManager(RM)、ApplicationMaster(AM)和 NodeManager(NM)共同完成。其中,RM 负责对各个 NM 上的资源进行统一管理和调度。而 NodeManager 则负责资源的供给和隔离。当用户提交一个应用程序时,会创建一个用以跟踪和管理这个程序的 AM,它负责向 RM 申请资源,并要求 NM 启动指定资源的任务。这就是 YARN 的基本运行机制。
最后,Yarn 作为一个通用的分布式资源管理器,它可以管理多种计算模型,如 Spark、Storm、MapReduce 、Flink 等都可以放到 Yarn 下进行统一管理。

Yarn调度器和调度算法

先进先出调度器(FIFO)

QQ截图20220511174101.png
单队列,根据提交作业的先后顺序,先来先服务
优点:简单易懂
缺点:不支持多队列,生产环境很少用

容量调度器(Capacity Scheduler)

QQ截图20220511174317.png
Apache Hadoop3.1.3默认的资源调度器,多用户调度器

  • 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
  • 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
  • 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列
  • 多租户:支持多用户共享集群和多应用程序同时运行,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定

容量调度器资源分配算法
QQ截图20220511174724.png

公平调度器(Fair Scheduler)

Fair Schedulere是Facebook开发的多用户调度器,CDH框架默认调度器。
QQ截图20220511175518.png
image.png
缺额
image.png