00:00
那咱们来看一下这个,呃,所谓的这个并发度问题啊,呃,这块呢,先不用管这个标题啥意思啊,我现在就给大家演示一个现象啊,演示一个现象啊来我们点开这个客户端,大家看注意观察啊,我现在刚才已经启动了一个have有客户端了,然后已经提交了一个这个SPA任务了,然后这个资源大家都看到了,是不是并没有释放啊,对吧?啊然后呢,我就在他这个没有释放资源的这个情况下,这时候你看我再干一件什么事啊,我再去提交一个mmr任务,然后呢,MR任务是不是也提到雅I上面啊对吧,我就提交一个普通的mrop,这op modelop应该是share hiop,呃,Mapop map61个example,然后诶,这是一个球派的任务吧,对吧?啊,球派然后呢,传两个参数一一,这两个参数呢,相当于就是这个球派算法的两个参数啊,这两参数值传的越大啊,那你这个任务呢就会呃,计算任务就会越多,完事之后呢,这个计算结果这个就会越精准,那咱们这儿呢没必要。
01:00
不让他太精准,咱们就跑个任务就行,出穿俩一就行了,回车。来提交啊,提交是能够正常提交的,对不对,哎,然后咱们就等着,诶到这儿到这儿之后,正常情况下是不是应该下边该说map百分之几,Reduce百分之几,是不是该走这走这一步来对不对,你会发现他这还走吗。他不走了,他卡住了。啊,他不动了。嗯,这个不动了是怎么回事呢,大家说。啊,这个并不是因为太慢了啊,这个你就等你等半小时,他还是这样啊。啊,这是为什么?大家可以琢磨琢磨,为什么咱们这会出现这种阻塞的这个这个现象。嗯,有人可能会想,诶是不是因为资源不够了呀,对不对,因为咱们这个,因为本身虚拟机资源,咱们资源有限,对不对啊,那我这边是不是已经占用了一部分资源了,没有释放对吧?那我这边呢,我再跑,我是不是可能没有资源,是不是可能有这种情况吧?对,可能是这个原因,那咱们看看到底是不是因为资源的问题呢?那是不是资源咱们怎么看,是不是得看一下咱们这个集群当中,这个资源是不是还有啊,对不对,还有没有资源。
02:07
从哪就能看到,其实从这能看到,呃,当然咱们这个这个上面往上看啊,看这个luster,这个matrix这个有什么,这个几个任务被提交了两个,对不对啊,然后我会翻啊这个什么APP pending啊,这是pening什么,是不是等待呀,对吧,这个runninging是有一个正在跑啊,那这个跑的是谁,是还王SPA的那个等的是谁?等的是MR那个对吧,其实你看下边也能看出来。你看这个是咱们Spark,这是刚才提到那个MAP6对不对,你看是不是一直在这等着呀,对不对,然后往上翻啊,往上翻这个看一看资源到底够不够啊,咱们集群当中一共有多少资源,12G内存,这个12个G怎么来的啊,12G怎么来的呀。是他自己计算的吗?是默认的吗?不是啊,这跟谁来的,是不是根据咱们那个。一个参数决定的呀,哪个参数。咱们在之前打海子普集群的时候呢,讲过一个这样的参数啊,就是有一个参数是node manager能够提供给雅安使用的最大内存,还有一个这个词还记得不。
03:10
我就不记得了啊,能记点啥,我们进到OBD啊Mo,然后还do吧啊ec啊海do吧,然后呢,咱们打开那个应该是雅安赛对吧?啊雅安赛。往下翻,你就往下翻,咱们找哪个参数往下拉,哎,就是这个。雅安node manager resource memory,单位是兆,对吧?啊,这个它是指的是什么?是每个node manager能够提供给雅安使用的内存。啊,那这是不是都是4096,虽然说有四个G啊,咱们一共三台G连三个note manager,所以说一共多少G,一共12个G是根这个绝根这根据这个来的啊跟这个来的,那当然呢,我们现在呃,这个使用了多少内存的,使用了是不是就一共就才用了4.5个G啊对不对,很显然这个资源还是有的,对不对啊,肯定是有的啊,那既然有为什么跑不动呢?这可那可能就不是资源的问题了。
04:09
诶,这个跟什么有关系啊,其实在这儿呢,是因为因为这个调度调度器的问题啊,因为调度器的问题啊,这个调度器有什么问题啊,来我跟大家解释一下,咱们现在默认情况下使用的调度器是哪一种啊?咱们三种非FA先进先出,还有容量capacity拍D,还有公屏fair sky对不对?那咱们用的是谁呀?默认是容量调度器啊容调度器,然后容量调度器当中大家都知道它里边是不是有一个队列的概念呀,是不是有队列的概念啊,一个调度器呢?我这有队列概念,那么默认情况下有几个队列呀?一个哪来的三个呀,这个从哪看啊,还是打开8088界面,是不是这有一个SKY啊,对不对,你点它。这个怎么跳的这么慢啊,咱们稍微等一会儿啊。嗯。呃,点这个SKY怎么这么慢啊,我清下缓存怎么回事,这是。
05:03
呃,庆祝出去。呃,把这个关掉。不应该这么慢呀。行,那咱们点击这个schedule来过来了啊好,那过来之后呢,大家看一下它有几个这个,一共有几个这个队列啊。这是不是就是这个application q q是不是咱们那个所有的这个容量器调度器的队列呀,对不对啊,你看一下有几个队列。这个队列结构大家熟悉吗?这个队列结构。它对列结构呢,是一个竖状的一个结构啊,什么叫竖啊啊咱们最最长二叉树对吧?呃,根节点,然后下边呢有俩哎子节点,那子点下边是不是还有这个俩子节点呀啊这是不是就是所谓的树啊对吧?这树那这个队列它就是一个树状的一个结构啊,一个树状结构,然后这个树状结构呢,它有一个根节点啊root节点啊这是route,然后呢,Root下面是不是会有子节点呀,那现在子点有几个,是不是只有一个default队列呀,对不对,也就是我们,而且我们提交任务的时候得得注意啊,大家提交任务只能往什么节点提交,是只能往这种非负节点提交,也是只能往这种哎叶子节点提交,或者叫子节点啊,只能往这样的节点提交,褥子能提交吗?不能提交,那它假如说是树状结构对不对?假如这个数比较复杂,那这儿有子节点,那它又有俩子节点,那你说你能提交任务的队列只能是哪?
06:36
这个。这个还有这个像他像他都不能提交任务的,能理解吧?啊得注意那也是咱现在实际上能提交队列的只有一个default队列啊,然后你们注意看这个颜色啊,绿色的是什么,是它被使用的队列啊,然后这个白色可能就是没有被使用的资源,对吧?没有使用的,你看这个没有使用资源还有没有有啊还有这么多呢,对不对啊,但是为什么他就提交不上来呢?
07:01
啊,这个跟什么有关系啊,给大家解释一下,这时候呢,我们可以点开这个队列看一下,点开它啊。Yeah。你点它这里边呢,有这个队列的一系列的配置参数,包括我这个队列呢,一共有多少资源,然后目前使用了多少资源啊,然后呢,等等其他的各种各样的参数都在这儿都有啊,然后这时候呢,我们注意看一个参数啊,看哪个看哪个。这个参数,这个参数叫什么呢?叫做configurre的max application master limit啊这个参数这个大致能能能猜测出来,这应该什么呀,跟是不是跟application master有关系的呀,对不对,其际上这个参数它的这个作用是什么啊,这个参数它所限定的,因为limit limit对吧,限定的是什么?限定的是在这个队列当中APP master所使用的所所使用的这个资源的一个上限。啊,这是他所限制的东西,它限制的是队列当中APP master所占用的资源。
08:02
啊是这样的啊,它限制是这个,其实它限制它就能限制什么呀。限制AP master,是不是每一个任务都有一个AP master啊,对不对,我限制它就能限制它是不是能限制我这个队列当中同时运行的这个。任务的个数啊,对不对,它其实限制的是这个东西啊,限制这个东西啊,OK,那它默认情况下,呃,限制了多少呢?是10%啊,也就是说我这一个队列当中啊,我这个所有任务的APP master之和,最多是该队列的10%的资源。啊,要那90%干什么呀。这90%干什么呀?跑任务呀,对吧,因为你一个任务你需要申请多多个container的,对吧,一个container干什么用,是不是跑AP master啊,然后剩下的contain干什么呀,是不是跑具体的任务啊,跑task对吧?Map task或reduce task能理解吧?啊是这样的,那它这一个队列里边的你不能说啊,这这个限制这个资源上限肯定也是很好理解的啊,为什么你不能说你这不限制,不限制的话,那我是不是整个队列里边,假如说全是APP master了,这个任务能跑吗?是根本就跑不了了呀,都都谁也跑不了,你全是master,你哪个任务都结束不了,你都只能等着能理解吧,那所以他这会限制一下APP master数量,然后其实正常情况下,如果咱们这个呃是一个生产集群,那我10%的这个比例,其实默认情况下是没有问题的,但是因为什么呀,因为咱们是虚拟集环境,我们这个资源太有限了,太少了。
09:35
对不对,咱们这个资源太少了啊,那假如说我现在这个整个队列资源,假如说啊,咱们一共有多少个G啊,假如说一共有12个G,对不对啊,假如12个G,然后呢,假如说我一个什么container,你可能假如说占用一个G的内存啊,那也就它相当于是不是就占占了一个G了呀,对不对,那它占一个G之后,是不是就已经将近那个10%了呀,对不对,那这时候我再申请一个任务,再来一个AP master。
10:02
那是不是就得两个G了,但是他是不是俩G,俩G是不是就超过10%了呀,所以说你第二个任务呢,它就一直没有申请下来,其实并不是总资源不够了,而是你没有资源去跑a master,那所以咱们这儿呢,要想让这个任务能够并行的跑,咱们这怎么做呀。啊对,咱们可以在这儿呢,就是因为咱们这个因为虚拟环境比较特殊嘛,所以咱们把这个值给它调大一点,那任务就能不行跑了,是由它导致的啊,所以这个参数呢,咱们得搞清楚,完了这时候呢,我们去调整一下这个参数,那要想调整这个参数呢,我们需要先将将什么,先将咱们这个海度102这边这个退出啊,亏了一下。啊,然后呢,把这个呢,CTRL也停了吧,哎,其实你会发现啊,我把这个退了对不对,他退了是不是他的资源就释放了呀,他释放之后103是不是正常来说就可以接着跑了,你看是不是已经开始跑了呀,是这样的啊,那咱们等他跑完吧,那就啊。那咱们需要去调整参数,调哪个参数,看文档来往下翻。
11:00
往下翻调哪个参数来来来,诶,其实是由这个参数去决定的啊。哎,叫做雅安点schedule.capacity点,然后maximum a ma就是resource,呃,那个appl master嘛,啊resource percent一个百分比啊,然后呢,这是一个小数啊,一个小数,咱们这儿呢,可以给它默认是0.1对吧,10%咱们调成多少啊,调0.5就行啊,两点五行,然后呢,这个参数呢,大家要注意看一下啊,这里边这个东西还比较多,咱们一点点看一下啊,那根据这个参数来看啊,跟着墙来看。这里边呃,涉及到了某个具体的队列了吗?是没有涉及到,对不对,因为咱们一个调度器当中,一个容量调度器里边是不是有可能会有多个队列呀,对不对,那这个并没有涉及到队列对不对,那所以说改这个参数相当于会改什么,会改每个队列当中的这个比例。每个队列都都都都会有效,对每个队列都有效,但假如说现在我我情况不一样,我现在可能我有多个队列,我第一个队列呢,我可能这个比例我想能调整10%,第二个队列呢,20%,第三个队列30%,也是我想按照队列去配置,那这个怎么办呢?用下边这个参数。
12:12
啊,看一下这个参数啊,那这个参数就是什么呢?就是雅安点schedule.capacity点跟上面是不是现到目前为止都是一样的呀,对不对,然后呢,Maximum诶这个这看看错地方了啊看下面这个啊下面这个啊来。来,那接着看啊,那从这雅安点这个scar点可怕点到这为止是不是还都是一样的呀,然后在后边就不一样的,它这有个什么,是不是有一个q pass啊对不对,那比如说我现在呢,想调整的是咱们那个呃,Default队列,那你说你这应该怎么写。不是default pass得从哪开始,从跟路径开始,应该是什么?应该是root.default然后点maximum等等等等,能理解吧,这个你配的就是defat队列,那假如我一会又有另外另外一个队列了,Root,点什么have队列,那就root.have.maximum你就能来配置这个不同的队列啊,有不同的比例了,能理解吧,那咱们这呢,就统一配就行了啊,咱们就直接把这个参数改一下,对所有队列都生效啊,咱们改一下,注意啊,咱们这写的是什么,是修改。
13:17
是添加啊,也就是说咱们这个文件当中是不是已经有这个参数了呀?啊,咱们是修改不是添加啊来咱们看一下。咱们要想改这个调度器啊,相关的这个配置,你说你应该改的是哪个文件呢?哎,是这个文件啊,在ETC海度下边有一个capacity schedule.sml这个文件是不是就是咱们那个容量调度器的配置文件呀,咱们改的就是它啊,咱们改它就行啊,OK,那这时候咱们去找一下这个文件啊,啊这个任务已经跑完了,这个派求出来的等于四是吧,啊,这个求的不太准啊,因为咱们那个参数全太小了,准俩一嘛,啊来,咱们进到OBD Mo海杜啊,进海杜。好,ETC还多,然后咱改的是哪个文件来着,是capacity CPA schedule啊把它打开,然后咱们找一下那个参数啊,往下翻往下翻,诶就这个。
14:10
是不是就是他?啊,因为它默认是0.1,就是10%嘛,咱们给它改成50%,就改成0.5就行了,0.5注意啊,是修改,你不要添加啊,有的同学可能这个添加了添加,而且你添加什么呢?你添加在它前边了,比如说我在这写一个0.5,那他走的时候从上一个参数一个参数走啊,那相当于你就白改了,0.5又变成0.1了啊,你就改,改完之后不生效啊,这个得改呀来是不对,然后咱们这个文件改完之后需要分发对吧?啊可拍D这个分发一下,分发之后呢,要想让它生效,是不是得重启咱们这个集群啊,那还得重启集群啊叭较慢啊,Stop吧啊ATS。呃,应该在这边stop,然后DFS啊,然后这边的stop。嗯,行好,呃,关了之后再重新启动啊,那这个问题应该就能解决了啊。
15:01
咱们稍微等一会儿吧。嗯,行,应该是已经停了啊SGPS。行启动。然后呢,我们这边来一个START2点。行,等他们重新启动。呃,重新启动之后呢,那咱们还得再再再再测一下啊,再测一下看看能不能同时跑这次。嗯,雅安已经起来了。Hfs应该也起来了。好,那这时候我们还得等会儿,那个安全模式还没退啊。放心。可心还得等七八秒啊呃,大家稍安勿躁啊,咱把这个做完之后呢,我们就给大家一点时间去练习啊,可能时间不多了啊,还有40分,40了已经是吧。嗯。来,我们启动快后端。
16:03
嗯。哎,好了,那这时候呢,我们还是再把刚才那个呃,Have客户端,你是不是得把那个任务得启动起来呀,他是不是才会占用资源呀,对咱咱们得咱现在启动起来啊,来也就在执行一个隐ER的语句走。嗯。现在把这个资源先占上来,咱们看8088界面啊,点这个applications。啊,刷新。哎,看这这个这是海王SPA的任务已经开始起了,然后这个资源呢,他现在呃,还没有占用上啊,咱们等一会儿。啊,资源已经占上了,OK,那他已经起来了,那这时候我们这时候呢,我们去,呃,在103上边呢,我们再同时提交一个这个,呃,这个海豆任务啊,MR任务啊,让他俩一起跑啊,OK,看这次他俩能不能同时跑完啊。嗯。这边102已经完事了,但是它那个资源并没有这个释放啊,然后看这边他能不能接着跑,诶大家看是不是这个任务已经,哎这个开始跑了呀,那现在呢,咱们相当于就可以同时跑多个任务了啊,是这样的啊行,那这块演示完毕,我把视频录一下啊。
我来说两句