Hadoop学习笔记(三):作业调度器

时间:2022-09-23 02:16:55
作业调度器       早期的作业调度使用FIFO(First In First Out)调度算法,可以设置属性mapred.job.priority或者JobClient的setJobPriority( )方法来设定作业优先级,可配置的优先级有5个:VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW。       除了FIFO调度器之外,还有两个多用户调度器,分别是Fair Scheduler和Capacity Scheduler。
1. Fair Scheduler(让每个用户公平地共享集群资源)
  • 公平调度器以资源池来组织作业,默认情况下,每个用户都有一个资源池,每个资源池的资源相等。在同一个资源池内,所有的作业共享该资源池的资源。
  • 当资源池所需的资源小于它所拥有的资源时,额外的资源会在其他资源池之间进行切分。
  • 公平调度器保证最小共享资源,当一个资源池有作业在运行时,它至少能获取最小共享资源。
  • 资源池可以被设置权重。
  • 公平调度器支持抢占,可以中止得到过多资源的任务,以便把资源分给在特定的一段时间内未得到公平资源共享的资源池。
2. Capacity Scheduler(资源按比例分配给各个队列)
  • 集群由很多队列组成,集群资源按比例分配给各个队列。
  • 空闲的资源会分配给未达到资源使用上限的队列。
  • 支持优先级,默认使用FIFO调度算法。
  • 添加各种严格限制,防止个别用户或队列独占资源。