00:00
好,接下来呢,我们讲一下这个资源的调度器啊。他在这个整个作业提交当中处于什么位置呢?还记得我们那个雅安流程当中。这一块吗。对吧,这一块呢,你的所有的任务呢,都添加到这一个任务队列里面去。啊,那这个呢,其实就是一个任务的一个调度啊,啊也叫这个资源调度器,那下面呢,我们看一看具体的资源调度器讲些什么。啊,目前专业调度器呢,主要有这么三种,一种呢是Fi,就是队列我们都比较熟啊,另一种呢叫容量调度器。还有一种什么呢?公平调度。呃,还8.7.2默认的资源调度器是。容量调度器啊,你可以查看一下相应的这个配置信息,在延安default这个呢,我给大家截出来了啊。啊,这里面你看这个调度器默认的就是容量。啊,这要清楚啊,在面试的时候会问你。
01:01
默认的任务调度器是哪一个?并解释一下它的。那下面看一下吧,首先我们从这个Fi调度器啊引入进来啊。队列是什么特点了?先进先出哈,OK。这是一个队列任务队列。队列里面呢,哎。来了一个job,那job呢,是按照什么呢?按照到达的时间先到先服务是吧。那后面陆陆续续的又加入了JOB23JOB46。再来,那正好你在运行账户的过程当中,哎,有一些新的资源。相当于比如说你新增加了服务器,或者已有的任务的运行完了。反正我是有有条件去运行这里面的照的时候。下面来看这个照,把一里面包含了。
02:03
四个ma,两个radio task。这没问题吧?对吧,在一个照运行需要map阶段,需要是第二阶段啊,那不同的阶段需要的这个任务也不同。你不有新资源了吗?那我就要运行了,那就分配给他一个任务。看懂吗?只是其中的一个啊,给过去。这个job当中包含这么多进程。那这其中的一个进程啊,或者几个进程啊,这是有可能的,主要是看他这个资源的。到底允许你运行几个?有resource manager。这就是这个最简单的三防调度。那这个调度学完之后,那往下看。看一下容量到期,也就是说系统默认的调度器。它是什么规则?请看。容量调度器呢,其实呢,它是多个翻包调度器的。
03:04
一个组合。假如说这里面我并行运行了三个。啊,这个队列。每一个队列里面都运行着很多很多的照。带着鸡鸭子。等待运行。再看一下这个容量倒计呢,它支持多个队列啊。原来开放的时候就一个队列。那这这个是不是并发度高一些。高一啊,每个队列呢,可配置一定的资源量。比如说你总共是100的资源。我是把所有的资源,这个资源怎么分配。进行一个设置啊,每个队列采用发包调度策略。单独一个都是一个三包调度车辆。先进先出吧。为了防止同一个用户的作业独占队列中的资源。
04:01
是你这一个任务啊,或者一个提交的人,他提交的照吧。有可能写。你的代码非常非常差。他瞬间把你整个队列全部。那么该调度器呢?会对同一用户提交的作业所占资源量进行一个限制。比如说你这里面总共有4G的内存。但是这个哥们提交这个作业写的。非常差。直接用了三点儿8G。如果全给他的话。那么这时候运维该找他了啊,直接强制他,让他把这个减小,我只给你2G。剩下的事自己想办法,这种事情在企业开发中是非常非常长的。非常常见的啊。就在京东内部啊,我问了好多老学员啊,他们都是这样的。就是说他写那段吧啊。他想运行,因为你申请的这个内存越多。跑的越快啊啊,都想自己跑得快一点。但是呢,结果呢,就是受硬件条件的限制。
05:04
就是这个啊。比如说呃,这里面每一个队列分配的资源也不一样。提供100%的支援,我这第一个队列分了20%,第二个50%,第三个30%。那我用20%的资源,我跑了15个太子。50%的队员跑了25个。看你哪一个先呢。中间那些。来。首先计算每个队列中正在运行的任务数。正在运行的任务数与谁呢?与其应该分得的计算资源之比。与他的比。除以它除以。然后选择一个该比值最小的对列。那就是其中就是谁最闲。那我再来任务的时候,我就优先考虑。
06:02
往哪一个队列里面去传输。那下面呢,其实。按照作业优先级和提交时间的顺序,同时考虑用户资源量限制。和内存限制,对队列内任务进行一个排序。就说这些任务的这个。间级是怎么排的啊,那首先最先考虑的是这个提交时间啊。还有额外的这个优先级设置。还有呢,考虑用户的这个资源量限制啊,内存限制。同的啊,这些限制后面我们都有相应的参数,会对它进行一个相应的调用啊。那这些是决定了这个哪个任务先跑。最主要的,其实提交时间默认情况优先级我们调的。比较少啊。主要是这个时间。谁先提交的,那谁来。另一个三个队列同时按照任务的先后顺序一是执行。比如。说。赵一。
07:01
2131。那么他们三个呢,就可以并发同时。运行。互不相干,互不影响,都有各自的这个资源。其实说稍微总结一下,就是这个容量调度器是多个F调度器的。原来是一个嘛,那现在呢,我就给你增加多个,增加多个什么好处呢?我是不是可以提高任务的并发运行。这是容量的问题。那再往下,哎。中频调度器。公平的。公平调度系统是按照缺额排序。谁缺的越多,资源缺的越多,那我们就选谁。缺额越这个越大的。优先运行。分配的资源也是优先运行。它呢也是内部呢,也是多个这种调度器。
08:03
只不过呢,他这个策略。有点习惯啊。你看啊。首先是支持多队列、多用户。多队列。然后呢,每个队列中的资源量呢,可以配跟这个容量当是一样,你可以对他进行设置相应的资源。同一队列中的作业公平。共享。对这种。我有。也就是说,你这里面分了20%的资源,这里面任何的一个人都有权利去拿这20的。啊,不像之前的,之前的是只有在队列,按照这个队列顺序排好序之后,优先一个一个运行啊。哎,他这不是,他这你看你能感觉到。入这个照一照个一二照一三是不是都赖运行。都在发。它是怎么分的呢?来看。比如说有三个队列,QAQBQC。这么三个。每个队列中造不按照优先级分配资源,优先级越高的,分配的资源越多。
09:06
但是呢,每个job都会分到资源,以确保。雨落均。是吧?不能这个。咖啡是吧?是不一样的啊,每个人啊。雨露均沾啊。在资源有限的情况下。每个照本理想情况下获得的计算资源与。与实际获得计算资源存在一定的差距。就说我希望我运行这个job需要4G的,那4G的这个资源那。但是呢,实际呢。核是目前只有一季。看你的差额是。3G吧,啊,那这个Z12呢,它实际需要他需要的这个理想的是5G。啊,5G内存,但是实际上也给他1G。那他的差额就是。谁查的多?下边这多吧,那下边这个多,那你往下看。
10:04
在同一队列中,Job的资源缺额越大。越先获得志愿优先级。所以说JOB12他缺的是四。你jump妖妖缺的是3G。那我先给谁呀?肯定先给4G的啊。其他资源。所以说呢,作业是按照缺额的高低来先后执行。而且呢,开摄像头,多个作业同时运行。也就是说,即使在同一个队列当中。正在运行啊。周在执行,这个就跟容量到期不一样。你能明显能感觉到这种调度策略。它的并发度数非常非常高啊。那耗的资源是不是相对来说要求高一些啊?如果你这个机器性能配置的稍微差一些的话。那有可能每个丈夫都在跑,对吧,这个在跑,这个在跑,这个在跑,这都在跑,结果是什么呢。
11:02
是没有一个能跑完的。哎,结果有可能导致没有一个的话。那上面这个容量到期呢。他是是不是就是你多少个并发度,就是执行并度直柱高啊,哎,执行完这一个,执行下一个,执行下一个,执行下一个。但是呢,它的并发度确实没有下一个高,这个呢,就是集群,如果性能非常高的话,那你。可以采用。啊,如果机械性能差一些,那还想有一定的并发度,那你可以选择这个,如。如果一点变化度没有,像你们这种普通的机器是吧。直接选择这种是不是OK了。家长,现在电脑已经。非常的高大上啊。仅次于我的了。
我来说两句