Hadoop – Schedulers and Types of Schedulers
学习笔记
原文链接:https://www.geeksforgeeks.org/hadoop-schedulers-and-types-of-schedulers/
在Hadoop中,我们可以从不同的客户端接收多个作业来执行。MapReduce框架用于在典型的Hadoop集群中并行执行多个任务,以快速处理大型数据集。此MapReduce框架负责调度和监视Hadoop集群中不同客户端提供的任务。但是这种调度作业的方法在Hadoop 2之前就已经使用了。
现在在Hadoop 2中,我们有了YARN(Yet Another Resource Negotiator)。在YARN中,我们有单独的守护进程,分别作为应用程序主机、节点管理器和资源管理器执行作业调度、监视和资源管理。
这里,资源管理器是主守护进程,负责跟踪或提供集群内任何应用程序所需的资源,而节点管理器是从属守护进程,它监视并跟踪应用程序使用的资源,并将反馈发送给资源管理器。
调度器和应用程序管理器是资源管理器的两个主要组件。YARN中的调度器完全用于调度作业,它无法跟踪应用程序的状态。根据所需的资源,调度器执行或我们可以说调度作业。
- FIFO (First In First Out) Scheduler.
- Capacity Scheduler.
- Fair Scheduler.
这些调度器实际上是一种算法,当我们收到来自不同客户端的请求时,我们使用它来调度Hadoop集群中的任务。
作业队列只是我们从各种客户机接收到的各种任务的集合。任务在队列中可用,我们需要根据需求安排此任务。
- FIFO Scheduler
顾名思义,先进先出(FIFO)即先进先出(First In First Out),因此首先出现的任务或应用程序将首先得到服务。这是我们在Hadoop中使用的默认调度程序。将任务放置在队列中,并按提交顺序执行任务。在这种方法中,一旦安排了作业,就不允许进行任何干预。因此,有时高优先级进程必须等待很长时间,因为在这种方法中任务的优先级并不重要。
2. Capacity Scheduler
在Capacity Scheduler中,我们有多个作业队列用于调度任务。容量调度器允许多个用户共享一个大型Hadoop集群。在每个作业队列对应的容量调度中,我们提供一些插槽或集群资源来执行作业操作。每个作业队列都有自己的插槽来执行其任务。如果我们只在一个队列中执行任务,那么该队列的任务也可以访问其他队列的插槽,因为它们可以自由使用,并且当新任务进入其他队列时,在集群中其自己的插槽中运行的作业将替换为其自己的作业。
优点:
最适合在Hadoop集群中处理多个客户端或优先级作业
最大化Hadoop集群中的吞吐量
- Fair Scheduler
公平调度程序与容量调度程序非常相似。这项工作的优先次序一直在考虑之中。在Fair Scheduler的帮助下,YARN应用程序可以共享大型Hadoop集群中的资源,并且这些资源是动态维护的,因此不需要预先的容量。资源以这样的方式分布,集群中的所有应用程序都可以获得相等的时间。公平调度器根据内存做出调度决策,我们也可以将其配置为与CPU一起工作。
正如我们告诉您的,它类似于容量调度器,但需要注意的是,在Fair Scheduler中,每当同一队列中出现任何高优先级作业时,任务都会通过替换已专用插槽中的某些部分来并行处理。
优势:
分配给每个应用程序的资源取决于其优先级。
它可以限制特定池或队列中并发运行的任务。



