📜  Hadoop – 调度器和调度器的类型

📅  最后修改于: 2021-10-27 06:52:04             🧑  作者: Mango

在 Hadoop 中,我们可以接收来自不同客户端的多个作业来执行。 Map-Reduce 框架用于在典型的 Hadoop 集群中并行执行多个任务,以快速处理大型数据集。这个 Map-Reduce 框架负责调度和监控 Hadoop 集群中不同客户端给出的任务。但是这种调度作业的方法是在Hadoop 2之前使用的。

现在在 Hadoop 2 中,我们有了 YARN(又一个资源谈判器)。在 YARN 中,我们有单独的守护进程,分别作为 Application Master、Node Manager 和 Resource Manager 执行作业调度、监控和资源管理。

这里,资源管理器是主守护进程,负责跟踪或提供集群内任何应用程序所需的资源,节点管理器是从守护进程,它监视和跟踪应用程序使用的资源并将反馈发送给资源管理器。

调度程序应用程序管理器是资源管理器的两个主要组件。 YARN 中的 Scheduler 完全致力于调度作业,它无法跟踪应用程序的状态。根据所需资源,调度程序执行或者我们可以说调度作业。

Hadoop 调度程序和调度程序类型

Hadoop 中主要有 3 种类型的调度器:

  1. FIFO(先进先出)调度程序。
  2. 容量调度程序。
  3. 公平调度程序。

这些调度器实际上是一种算法,当我们收到来自不同客户端的请求时,我们使用它来调度 Hadoop 集群中的任务。

作业队列只不过是我们从各种客户端收到的各种任务的集合。任务在队列中可用,我们需要根据我们的要求安排此任务。

A-Job-Queue-in-Hadoop-Schedular

1. 先进先出调度器

顾名思义,先进先出,即先进先出,所以先来的任务或应用程序将首先得到服务。这是我们在 Hadoop 中使用的默认调度程序。任务被放置在一个队列中,任务按其提交顺序执行。在这种方法中,一旦作业被调度,就不允许干预。因此有时高优先级进程必须等待很长时间,因为在此方法中任务的优先级无关紧要。

优势:

  • 无需配置
  • 先到先得
  • 执行简单

坏处:

  • 任务的优先级不重要,所以高优先级的工作需要等待
  • 不适合共享集群

fifo-调度器

2. 容量调度器

在容量调度器中,我们有多个作业队列来调度我们的任务。容量调度器允许多个占用者共享一个大型 Hadoop 集群。在每个作业队列对应的Capacity Schedular中,我们提供了一些槽或集群资源来进行作业操作。每个作业队列都有自己的插槽来执行其任务。如果我们只有在一个队列中执行任务,那么该队列的任务也可以访问其他队列的插槽,因为它们可以自由使用,并且当新任务进入某个其他队列时,作业会在自己的插槽中运行集群被替换为它自己的工作。

容量调度程序还提供了一个抽象级别,以了解哪个占用者正在使用更多的集群资源或插槽,以便单个用户或应用程序不会占用集群中不合适或不必要的插槽。容量调度主要包含根、父、叶三种队列,分别用于表示集群、组织或任何子组、申请提交。

优势:

  • 最适合在 Hadoop 集群中处理多个客户端或优先作业
  • 最大限度地提高 Hadoop 集群的吞吐量

坏处:

  • 更复杂
  • 不容易为每个人配置

容量调度器

3. 公平调度器

公平调度程序与容量调度程序非常相似。考虑到工作的优先级。在 Fair Scheduler 的帮助下,YARN 应用程序可以共享大型 Hadoop 集群中的资源,并且这些资源是动态维护的,因此不需要预先容量。资源以这样一种方式分布,即集群内的所有应用程序获得相同的时间量。 Fair Scheduler 根据内存进行调度决策,我们也可以将其配置为与 CPU 一起工作。

正如我们告诉您的,它类似于容量调度程序,但要注意的主要事情是,在公平调度程序中,每当同一队列中出现任何高优先级作业时,都会通过替换已经专用插槽中的某些部分来并行处理任务。

好处:

  • 分配给每个应用程序的资源取决于其优先级。
  • 它可以限制特定池或队列中的并发运行任务。

缺点:需要配置。

公平调度器