Yarn资源调度器
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作平台,MapReduce等运算程序相当于运行于操作系统之上的应用程序。
计算模型层出不穷,这么多计算模型如何协同工作、如何做好资源管理,就显得至关重要了。于是,在 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)
单队列,根据提交作业的先后顺序,先来先服务
优点:简单易懂
缺点:不支持多队列,生产环境很少用
容量调度器(Capacity Scheduler)
Apache Hadoop3.1.3默认的资源调度器,多用户调度器
- 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
- 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
- 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列
- 多租户:支持多用户共享集群和多应用程序同时运行,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定
公平调度器(Fair Scheduler)
Fair Schedulere是Facebook开发的多用户调度器,CDH框架默认调度器。
缺额