Hadoop集群中有三种作业调度算法

Hadoop集群中有三种作业调度算法

Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法

先来先服务(FIFO)

Hadoop中默认的调度器FIFO,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。
FIFO比较简单,hadoop中只有一个作业队列,被提交的作业按照先后顺序在作业队列中排队,新来的作业插入到队尾。一个作业运行完后,总是从队首取下一个作业运行。这种调度策略的优点是简单、易于实现,同时也减轻了jobtracker的负担。但是它的缺点也是显然的,它对所有的作业都一视同仁,没有考虑到作业的紧迫程度,另外对小作业的运行不利。

公平调度策略

这种策略在系统中配置了任务槽,一个任务槽可以运行一个task任务,这些任务就是一个大的作业被切分后的小作业。当一个用户提交多个作业时,每个作业可以分配到一定的任务槽以执行task任务(这里的任务槽可以理解为可以运行一个map任务或reduce任务)。如果把整个hadoop集群作业调度跟操作系统的作业调度相比,第一种FIFO就相当于操作系统中早期的单道批处理系统,系统中每个时刻只有一道作业在运行,而公平调度相当于多道批处理系统,它实现了同一个时刻多道作业同时运行。由于linux是多用户的,若有多个用户同时提交多个作业会怎样?在这种策略中给每个用户分配一个作业池,然后给每个作业池设置一个最小共享槽个数,什么是最小共享槽个数呢?先要理解一个最小什么意思,最小是指只要这个作业池需要,调度器应该确保能够满足这个作业池的最小任务槽数的需求,但是如何才能确保在它需要的时候就有空的任务槽,一种方法是固定分配一定数量的槽给作业池不动,这个数量至少是最小任务槽值,这样只要在作业池需要的时候就分配给它就行了,但是这样在这个作业池没有用到这么多任务槽的时候会造成浪费,这种策略实际上是这样做的,当作业池的需求没有达到最小任务槽数时,名义上是自己的剩余的任务槽会被分给其他有需要的作业池,当一个作业池需要申请任务槽的时候若系统中没有了,这时候不会去抢占别人的(也不知道抢谁的啊),只要当前一个空的任务槽释放会被立即分配给这个作业池。
在一个用户的作业池内,多个作业如何分配槽这个可以自行选择了如FIFO。所以这种调度策略分为两级:
第一级,在池间分配槽,在多用户的情况下,每个用户分配一个作业池。
第二级,在作业池内,每个用户可以使用不同的调度策略。

计算能力调度

计算能力调度和公平调度有点类似,公平调度策略是以作业池为单位分配任务槽,而计算能力调度是以队列为单位分配tasktracker(集群中一个节点),这种调度策略配置了多个队列,每个队列配置了最小额度的tasktracker数量,同公平调度策略类似,当一个队列有空闲的tasktracker时,调度器会将空闲的分配给其他的队列,当有空闲的tasktracker时,由于这时候可能有多个队列没有得到最小额度的tasktracker而又在申请新的,空闲的tasktracker会被优先分配到最饥饿的队列中去,如何衡量饥饿程度呢?可以通过计算队列中正在运行的任务数与其分得的计算资源之间的比值是否最低来判断的,越低说明饥饿程度越高。
计算能力调度策略是以队列的方式组织作业的,所以一个用户的作业可能在多个队列中,如果不对用户做一定的限制,很可能出现在多个用户之间出现严重不公平的现象。所以在选中新作业运行时候,还需要考虑作业所属的用户是否超过了资源的限制,如果超过,作业不会被选中。
对于在同一个队列中,这种策略使用的是基于优先级的FIFO策略,但是不会抢占。

【参考文档】(https://www.aboutyun.com//forum.php/?mod=viewthread&tid=6798&extra=page%3D1&page=1&)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop集群优化是指通过一系列措施来提高Hadoop集群的性能和效率。下面是一些常用的Hadoop集群优化方法: 1. 适当调整Hadoop配置参数:通过调整Hadoop的配置参数,如内存大小、线程数、文件系统缓存等,可以优化集群的性能。合理地设置这些参数可以提高任务的执行速度和整个集群的效率。 2. 使用数据压缩:在Hadoop集群,可以启用数据压缩来减少磁盘占用空间和网络传输的开销。通过减小文件的大小,可以提高数据的读取和写入速度,从而提高任务的执行效率。 3. 数据划分和分区:合理地划分和分区数据可以提高数据的读取和处理效率。通过将相关数据存放在同一个节点或者同一个数据块,可以减少数据的迁移和网络传输的开销,从而提高任务的执行速度。 4. 使用数据本地化:Hadoop集群在执行任务时,会将数据从存储节点上移动到计算节点进行处理。如果任务的输入数据能够在计算节点的本地磁盘上找到,可以大大减少数据的传输时间,提高任务的执行速度。 5. 资源调度作业调度:合理地调度资源和作业可以充分利用集群的计算能力,提高任务的执行效率。优化资源调度作业调度算法,可以保证高优先级的任务先执行,避免资源浪费和任务阻塞。 6. 数据备份和容错机制:在Hadoop集群,数据备份和容错机制是非常重要的。通过增加数据备份的副本数,可以提高数据的容错性和可靠性。合理地设置副本数目,可以平衡存储空间和数据处理效率之间的关系。 通过以上优化方法,可以提高Hadoop集群的性能和效率,提升任务的执行速度和数据处理能力。不同的优化方法可以根据具体的需求和情况进行选择和调整,以达到最佳的优化效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值