00:00
好,同学们,我们接下来把我们的课件呢,咱们稍微的梳理一下啊,那么来首先看我们这边,呃,我们叫任务的调度机制啊,这里面说了,在生产环境当中,我们一般的部署方式呢,都是集群模式,那么我们后面讲解的呢,基本上都是以集群模式来做讲解啊,那么首先我们来看一看,他说了,在咱们任务调度的过程当中,它一般会有一些概念,比方说job呀,Stage啊,以及task的概念,对吧?那么咱们的job作业呢,它是以那个行动算子为借,遇到一个行动算子就会触发一个job,这个咱们之前讲过,然后呢,这个在叫阶段,它是我们作业的子集,它会以宽依赖为界啊,遇到一个我们的沙否宽依赖就会做一次划分,所以呢,咱们阶段的数量其实等于沙Le依赖的数量加一对吧,然后task任务,它是我们阶段的子集,它是以并行度来衡量啊,说的简单点就是你多个任务。
01:00
通时执行嘛,对吧,那么我们分区的数是多少,就会有多少个task,这个其实可能不是很准确啊,我们应该是一个阶段当中最后的那个RDD的分区数是多少,这个阶段就会有多少个task,对吧?诶是这么个概念啊,然后Spark的任务调度总体上来分为两路进行,一呢是咱们阶段级别的调度,其实就是那个,一个是我们task级别的调度,就是那个叫task schedule对吧?啊,总体上它的流程呢,应该就是我们现在的这个样子啊,那么我们这个图形我们不再说了,咱们接着呢往下下面呢,会有我们这张图形,这个图形对于我们大家来讲其实还比较好的,为什么呢?他把很多的对象都给它列出来了,那么比方说我们这边有一个上下文的环境对象,那么这个上下文的环境对象Spark contact当中,大家会发现我们通过我们的RDD来提交,提交以后会放到一个事件。
02:00
队列当中,然后呢,里面会有一个有向无环图的调度器,它会把我们的任务给它,诶,切分出来,然后变成task set,叫任务集,再通过我们的一个调度器把它封装成task set manager,然后放到一个任务池当中,这个咱们之前给大家讲过,那只不过我们这个图画的呢,可能还是比较简单的,对吧?但这里面把这个流程就画出来了,然后呢,你放到任务池当中,我们继续干嘛呢?通过我们的获取方式从任务池中把任务取出来,然后呢,通过我们的终端找到对应我们的节点来发送执行,所以这边会有一个启动task的操作,然后呢,接下来由我们的这个计算对象通过我们的线程池来执行咱们的,哎,我们的任务对不对?所以这张图其实整体来讲还是非常不错的,很多的核心概念和对象在这里面都能够体会出来。这个同学们需要。
03:00
大家呢,去理解一下好吧,然后后面的这些啊,我们就不再给大家说了,这都是一些文字性的描述,然后这边呢,是我们stage级别的调度啊,这个呢,图形当中也都有,比方说我们判断它是不是有上一级啊,呃,我们该怎么办呀,是不是提交啊,它里面都是有的啊,这个咱们都不说了,然后呢,接着往下,下面呢,会有一个叫做task个级别的调度,Task个级别的调度当中就有那个叫做什么呢?Task个set呀,Task个set manager呀,他们放到任务词当中做一个我们什么公平调度吧,什么先进先出fio啊,诶,它里面都有啊,然后呢,我们课件当中也对我们的这个调度方式啊做了一个简单的说明,有一个叫fio,它有一个默认的调度策略,还有一个叫公平调度,公平调度呢,就会判断它的一些基本属性啊,比方说我们的权重啊,或者说我们运行的那个任务的数量啊,还有比率啊,他们都会做一个判断,这都是底层的实现细节。其实对于我们来讲,我们倒不用很。
04:00
分析,咱们只要知道其实就够了啊,好,我们接着呢,我们往下,但下面呢叫本地化调度,这个跟咱们前面讲那个本地化级别是有关系的,所谓的本地化级别就是我们的什么呀,计算跟数据它所在的位置是什么样一种关系,比方说你们两个都在我们的同一个进程当中,我们就称之为叫进程本地化,如果你们两个在同一个节点当中,我们就称之为叫节点本地化,如果你们在同一个机架上面,咱们就叫机架本地化,所以啊,他们其实什么啊,Process local啊,No local啊,包括我们的local啊,其实都有这个内容啊,当然了,如果我们都放不了的话,还有一个叫安内,放在任何一个地方都是可以的啊,所以呢,它里面会有这么一个概念啊,然后呢,他说了,这里有个级别,这个级别的作用是什么呢?就是说当你满足不了这个级别的时候,它会往下降低级别。
05:00
所以啊,有个从高到低的一个顺序的概念啊,就是这个意思了,然后呢,我们接着往下,下面叫失败从事和黑名单机制,这是什么意思呢?是因为啊,我们本来呢,是应该发给最好的一个进程中去执行,但是啊,你发不过去,为什么发不过去呀?可能网络原因可能阻塞了,也可能是垃圾回收器正在执行,你连不上,这都有可能吧,那么有可能的情况下,你马上就降级处理,你的性能就会下降很多,所以啊,如果我们第一回连不上的话,我能不能稍微的什么重新再连一回呢?所以如果我能重新连的话,那不就有机会发送给他了吗?所以我们不要着急,不要说一出错马上就降级,这个可能不合适,我们是需要有一个重试的概念,那所以啊,这就叫重试的一个概念,那还有一个叫黑名单是什么意思啊,比方说咱们的某个节点都当掉了,你当掉的话,你还有必要。
06:00
重试吗?没有必要,你当掉,你肯定连不上嘛,那么你连不上就没有必要再重试了,对不对,所以啊,咱们应该有个黑名单,这样的话也可以提升我们的性能啊,这个都是底层的一种实现原理,实现机制啊,这个咱们知道就可以了,好了,这个任务的相关操作呀,咱们就说到这里把课件梳理了一下啊。
我来说两句