00:00
好,接下来我们来看一个公平调度器的案例,这个公平调度器啊,是在这种中大型公式当中大量使用的啊,非常重要啊。呃,首先说明一个事儿,公频调度器呢,它也有一个默认调度器叫default。Defat队列,那现在呢?在这个default队列基础上,我再增加两个队列,分别是test和硅谷。最终有三个对点OK吧,啊是这个含义哈,那下面我们来看一下。说创建两个队列,Test I硅谷以用户所属主命名,诶期望呢实现以下效果,什么效果?若用户提交的任务时指定了这个队列,比如说指定了我这个任务提交到test。那我这个任务就会提交到test,这没啥说的对吧?嗯,那如果没指定呢。那test用户提交的任务就会发送到这个地方,Root root还记得吗?是所有队列的这个根目录,对吧?根目录那它下面有呃,Deft。
01:01
呃,还有呢,呃,Test。以及还有一个艾特硅谷啊这样的情况,那没有指定默认你是哪一个用户提交的,我就在哪一个队列里面运行,那如果你是艾特账号提交的,那我就发送到艾特硅谷对应的这个队列,那这里面还涉及到一个主,因为这个用户啊,每个用户是不是还有主啊,啊你也可以配置它是哪一个主的。是这个意思啊,行,那下面往下看。配置公平调度器,呃,需要配置两个文件,一个文件呢是呃系统自带的叫雅n site点叉ML,这个大家并不陌生,那另一个呢,是公平调度器的队列的一个分配。对吧,你创建几个队列,那我单独来一个文件来写它,那这个文件名称呢,默认它没有。还得需要你自己去定义,为啥没有啊,因为它默认是不是有一个default这个,呃,Default叫容量代器。哎,在阿法提下呢,它没有这个。那这个我们自己创建也行,那下面具体怎么配置,你可以参照这个官网。哎,这个文件。
02:00
你打开这个,由于网速比较慢,我提前给你打开了,那这里面有这个,呃,公平调度器的一个详细配置,那配置这里面有这么多参数。对吧,据说大家这个英文呢啊非常棒啊,而且看起看它呢也非常轻松对吧?哎,观看它之后,下面呢,还给你举个案例,说你可以照着这个方式啊呃,以张。啊,如何配置。给了他。那那光给它呢,只是教你怎么配,那如何配置哪个参数达到最佳的一个效果呢。这个参数啊,这个文档,这个文档是什么文档呢?它是一个CD cloud下面那个CDH那个文档。CDH,咱之前说过是不是收费啊,哎,人家收费是有道理的,那当然会给你各种经验值,你说这个参数应该怎么配,配多少合理,这个参数取决于什么?那你也可以看那个。是吧,嗯,这个位置。对吧,那这个呢,就是呃,阿帕奇海多法雅恩帕公平调度器的一个啊基础一个参考,那这里面也给了你给了你一些呃参考经验值啊,你自己来看,那据说大家这个英文非常棒,呃自己也能搞定啊,但是呢,呃,我给大家呀啊提前准备好了啊,提前准备好了看一下啊,我把这里面浓缩的精华拿出来了。
03:18
呃,首先来看第一个叫雅n set对吧?啊雅set看我们默认的是容量造器,你首先要修改的就是把这个调度器修改为公平。调度器。这个没毛病吧,哎,这个是必须要改的第一条,那改完之后,刚才说了有一个配置文件叫fire调度器,这个参麦啊,它默认没有需要我们自己去创建,那你自己创建的话,你是不是得告诉系统在什么位置,哎,那我们把它放在这个ETC hi度款仍然是这个配置目录下,哎,指定。按照这个文件进行配置公平调度器。OK,好,下面还有一个参数。这个呢叫禁止队列间的一个资源抢占。
04:01
之前说了公平调数器呢,它是有这种队列,资源不够的时候,我可以进行一个借。啊,戒指。那么这个如果是公平造器的话,其实公频造器啊,它是让人人这个尽量均匀,那这里面我就把这个。诶,这个借调这个功能啊,给它关掉,哎防止这个,哎有一些这个啊,不是那么均匀的这种场景啊,我们把它关掉啊。当然你愿意借的话,你可以打开这个没啥影响,那下面呢,是这个公平道器具体的一个配置。首先来看下面这两个参数。第一个参数叫单个队列中application master占用资源的最大比例。什么意思啊?我们开启了一个任务,首先启动的是不是这个Mr master?对吧,那你首先启动它,那我给这个MRPMR多少资源,它能起来呢。是这个意思,那这里面说,呃,默认值是多少,默认值是0.1啊0.1,比如说总共队列呢是十个G。
05:02
那我0.1我就会用一个G的资源去启动这个master。那这里面我为什么给它改成0.5的呢。因为是跟咱们这个服务器啊,目前这个资源比较少有关系,咱现在服务器内存多少就四个G。四个G的0.1多少,是400兆,400兆吧,这个启动这个mrp master有点有点费劲。啊,资源有点不太够啊,所以说我这块呢,我给它调大了,你真正在生产环境下呢,128G的0.1就足够了。啊,这个是足够了哈,这个是这里面我们调差啊,调稍微调大了一些啊,这里面给你标注了企业的基限值呢,是0.1好吧啊。嗯,再往下说单个队列的资源的默认值啊,单个队列最大资源的默认值。啥意思呢?你不创建了一个呃,Default test,还有一个I5这三个队列。那他问你说每一个队列资源的最大默认值。是多少?那我总资源多少啊?我总资源三台服务器,总资源一个是4G乘以三,是不是12G内存呢。
06:04
多少个CPU啊?呃,四个CPU乘以32个CPU啊。嗯,12个CPU 12g内存。那OK,那我要分三个队列。每一个队列的最大资源,那就我均分呗,就最简单办法就均分,那均分的话,那每一个队列时候就不要超过。4G4核4G4核4G4核。就这意思。OK吧,嗯,行。那下面来开始,我们要增加第一个队列,叫test队列。那怎么增加呢?首先这个队列名称往这一放。简单吧,那这个队列的最小资源是多少?最小和最大一起看了得了。最大资源,你这个最大的资源不能超过你上面设置的这个最大资源,对吧,你这是4G4核,那我这也就4G4核不能超过它啊好,那我最小的话,那我比他小呗,比它小一半,那两核啊,这个2G内存。那再往下,那下面说这有一个四啥意思呢?说队列中最多同时运行的应用数,你说你最多这一个队列里面能同同时跑几个任务。
07:11
默认是多少个?默认是50。还是非常多的,那这个参数跟跟谁有关系呢?就说你这个队列当中,你有多少个线程数。对吧,那你看我们一个队列当中,我就相就拿一个note manager节点嘛,因为我三个队列嘛,对吧,相当于一个note manager正好是一个队列,嗯,一个not manager队列,它是是不是四核四线程啊,那四核四线程是是我同时就只能跑四核任务,四核线程吗?那他就不卡顿呗,那所以说配就是四啊。再往下走,下面说队列中f master占用资源的最大比例,那跟刚才那一样嘛,对不对,那这里面也是啊,由于咱们资源少,所以说我这里分的比较多,生产环境下你不要配0.5啊,那平0.5有有点太多了,嗯。再往下,那下面是这个权重啊,权重1.0,默认都是1.0,那就正正常分是吧?啊这个权重之前咱们讲这个理论的时候也讲给大家讲过啊,它怎么配的啊。
08:02
行,那这个呢,调度器这个队列呢,是公平策略,没毛病吧,就这么简单就配完了,那下一个二五。爱股跟上一个一样哈,一模一样,你看首先这个名称呢,叫爱硅股啊,呃,然后呢,它是。最小资源2G2核4G4核对吧,好的线程数四个,嗯,I080占用0.5%啊这个权重1.0,调度策略范公平。这个增加队列没什么难度,那往下看下一个大家再思考问题,我队列创建完了,我提向这个队列里面提交一个任务,我这有三个队列。我没有指定说我这个任务往哪个队列里面提交。那我这任务给谁呀?是吧,你这31233个队列我给谁呢?好,那这个下面就是告诉你,你说这个任务给谁。那首先第一个把它撕成false。啥意思呢?如果你提交这个任务,它没有指定队列。那我就按照你这个名称,我创建一个队列。
09:03
你刚才不是已经有伤了吗?对吧,但是我又提交了一个谁呢,呃,李雷。哎,李雷提交了一个任务,别李雷了,送送嘛啊送送经典人物对吧?哎,送送提交一个任务,那这个队列匹配不上啊,那就再来一个叫送送队列直接默认赶紧创建。啊是这个意思,OK吧,哎,那这个呢,我们把它关掉,那关掉呢就是不允许这种事情发生,不让它创建,那继续必须得匹配这三个,那继续往下找,那它下面会匹配谁呢?首先匹配的是用户这个名称。比如说你你这个这样,我来了一个艾特,我这个账号提交。你这不有三个队列吗?啊,其中有一个队列是不是艾特硅谷啊,那我只要用艾特硅谷账号去提交,即使我没有配置说我这些队列。这个任务放在哪个队列里面,那它会自动去找啊,往这里面提交。OK吧,好,那还有一个,下面说这个,如果你没有指定名称,那还可以有主,哎,你说你这个爱是哪一个主的,那也行,它会自动匹配这个主对应的一个队列,那当然这个我们没配啊,我们只配了一个用户了就行了,谁哪个用户提交的,我就往哪个队列里面放。
10:08
再往下。那有这种可能啊,他既不是T的,也不是爱硅谷,也不是宋送,是苍老师。苍老师提交了个任务。那这时候你怎么办?对吧,那怎么办?那你有两种选择,一种是拒绝你这种任务我不接受,你必须指定一个队列,或者呢,这个要不你就是艾特Google账号或者T账号。对吧,哎,那这块就要拒绝,那另一个呢,叫default,比如说那即使用户没指没指定,那我这个常老师呢,我可以给他放到这个默认这个default这个队列里面一。这也可以。那看你要谁了,那这个地方必须得指定一个。OK吧,这就是匹配规则,那我这里面就直接拒绝了,我不让你这个那非法用户提交可以吧,嗯,好,那我把这个配置啊给大家这个啊写一下哈,首先呢,是改一下这个延。拿过来。
11:00
CDC还做房。盐杠set啊,进来进来之后来到末尾,然后O。搞定。OK吧,第一个,然后呢,VM我再创建一个这个调度器啊,Fair调度器开。这个就是它默认没有啊。打开。然后呢,把我们编写好的这个调度器拿过来。OK。接下来别忘了要分发雅安。That啊,还有一个呢,就是这个刚才我们写的。呃。Fair气OK。对吧,分发完毕,分发完毕了之后,你查看一下。CDETC房。Vm fire。对吧,哎,有这个值那就OK了。行,那现在呢,这个已经分发完毕,那接下来要干的事情呢,就是要重启。
12:04
盐啊充钱,那你看你集群有没有启动啊。积雪已经启动,那我就冲击牙来到云龙山。Sb start啊stop,先stop啊stop,雅点走。SB。眼走。啊,正常启动。启动完之后啊,我们先看一下这个。嗯,调度器把这个任务打开刷新。刷新来到调度器,现在是什么调度器了?看这位置。注意变了,哎,现在已经变成了说,呃,Root下面有个default,有一个test,还有一个艾硅谷这么三个调度器,那每个调度器呢,你可以打开对吧,哎,正常的一个配置。最大的这个呃,运行ID数啊四个,呃最小内存4G2核,那下面呢这呢是呃正常的运行呢,呃,最低标准是2G啊2G内存。
13:07
好,那test啊,Test的参数,这还有一个default对应的这个参数,OK吧,这是呃队列一个情况,那下面呢,我们开始进行一个测试,仍然是执行这个word count这个程序,只不过呢,这次呢,我们指定了一下,我这个任务是要在test。这个队列里面运行,这没问题吧,哎,好,那我直接拿过来。来到test。行吧,就在这儿执行吧。走的时候,我们来到这儿刷新。刷新。现在呢,是在T户,你看是不是T开始执行了,对吧?哎,开始执行了。执行,哎,执行。占了多少,占了这么多哈。啊,应该差不多了吧,还没执行完。啊,这么慢吗?啊,执行完毕了,执行完毕再回来看一下。
14:02
对吧?哎,那这个你指定的话,他就会在你在你指定的这个队列里面进行执行,那下面如果说我不指定。看啊,现在呢,我不指定我这样去执行。我把这些参数干掉。那它是一个什么效果呢。拿来。直接删掉。行吧,那你看好我当前是什么用户,我是不是艾特购用户啊,那如果我是艾特用户走。执行刷新。刷新看到了吗?哎,你是哪一个用户,它自动的给你匹配,匹配是哪一个。队列。这比较智能吧,啊以后呢,你就不用关心说我这个用户提交的这个任务啊,他提交到哪个队列,哎,我是大库,我直接自己创一个队列就往里面提交了啊这种事比较好啊对在在企业里面对吧,多人开发的时候,你自己写的任务直接提交到自己的队列里面,你看结束了。
15:01
啊,这就是公平调度器的一个使用啊,还是非常简单的。
我来说两句