yarn队列设置

在大数据平台运维中,会经常遇到集群资源争抢的问题。因为在公司内部,Hadoop Yarn 集群一般会被多个业务、多个用户同时使用,共享 Yarn 资源。此时,如果不对集群资源做规划和管理的话,那么就会出现 Yarn 的资源被某一个用户提交的 Application(App)占满,而其他用户只能等待;或者也可能会出现集群还有很多剩余资源,但 App 就是无法使用的情况。 如何解决这个问题呢?此时就需要用到 Hadoop 中提供的资源调度器。 Yarn 多用户资源管理策略 Yarn 提供了可插拔的资源调度算法,用于解决 App 之间资源竞争的问题。在 Yarn 中有三种资源调度器可供选择,即 FIFO Scheduler、Capacity Scheduler、Fair Scheduler,目前使用比较多的是 Fair Scheduler 和 Capacity Scheduler。下面对这三种资源调度器分别进行介绍。 1. FIFO Scheduler 在 Hadoop 1.x 系列版本中,默认使用的调度器是 FIFO,它采用队列方式将每个任务按照时间先后顺序进行服务。比如排在最前面的任务需要若干 Map Task 和 Reduce Task,当发现有空闲的服务器节点时就分配给这个任务,直到任务执行完毕。 2. Capacity Scheduler 在 Hadoop 2.x/3.x 系列版本中,默认使用的调度器是 Capacity Scheduler(容量调度器),这是一种多用户、多队列的资源调度器。每个队列可以配置资源量,可限制每个用户、每个队列的并发运行作业量,也可限制每个作业使用的内存量;每个用户的作业有优先级,在单个队列中,作业按照先来先服务(实际上是先按照优先级,优先级相同的再按照作业提交时间)的原则进行调度。 容量资源调度器,支持多队列,但默认情况下只有 root.default 这一个队列。 当不同用户提交任务时,任务都会在这个队列里按照先进先出策略执行调度,很明显,单个队列会大大降低多用户的资源使用率。 因此,要使用容量资源调度,一定要配置多个队列,每个队列可配置一定比率的资源量(CPU、内存);同时为了防止同一个用户的任务独占队列的所有资源,调度器会对同一个用户提交的任务所占资源量进行限定。 举个简单的例子,下图是容量调度器中配置好的一个队列树: 上图通过队列树方式对 Yarn 集群资源做了一个划分,可以看到,在 root 队列下面定义了两个子队列 dev 和 test,分别占 30% 和 70% 的 Yarn 集群资源;而 dev 队列又被分成了 dev1 和 dev2 两个子队列,分别占用 dev 队列 30% 中的 40% 和 60% 的 Yarn 集群资源。 ...

2023年5月28日 · 2 分钟