00:00
那么关于这个调度呢,咱们讲了这么久。我们无非就是两大块内容,第一块是不是关于图的一些详细过程啊。啊,那第二块是不是咱们整个链路是怎么走的,对不对啊,那首先我们来看一下这个图,我们同样看这张图来回忆咱们的源码,哎。来,先从流图开始,在哪生成?是不是在?可在front里面对吧,或者咱们简单讲是不是客户端那个组件里面好,它怎么生成啊,是不是根据咱们代码里面的算子顺序挨个添加到一个叫流图的结构里面去啊,对吧?那并且他把某一些不是对数据做转换的算子,把它变成了一些边对不对。比如说击败是变成了这个哈西边了。
01:01
啊,说白了是不是封装两个东西,第一个留节点,第二一个留的边,并且把它们之间的前后出入关系把它串起来。是不是?这样这个就是咱们流图做的工作啊,那么接下来到下一个图了,叫作业图。那么作业图里面在哪生成的呀?是不是也是客户端这一部分做的事儿啊,对吧?哎,呃,也是在客户端这里做了完成的,那么这里呢,它相比于流图做了几件事情,第一件事。如果是可以优化成操作链的,就把它们。串在一起是不是好,这完成了第一件事,那么其他的是不是相关节点跟边的转换呢?那么他做了哪几个转换呢?首先把咱们的牛节点转成了。
02:00
作业图的一个顶点,哎,那把我们的流边转化成了一个作业的边啊,作业图里面的边。同时又。多生成了一个某个顶点的。中间数据集对吧,好之后呢,是不是把这些数据集边还有顶点。根据前后关系去便利串联起来。是不是?啊,咱们就记住这个就可以了啊,那因为代码里面就比较啰嗦,比较复杂的。诶,这个咱们之前上课是不是也介绍了这张图啊。啊,但是是不是粗略的就过去了,那么现在呢,大家就要这些名字稍微记一记,对吧,显得你专业,你你专不专业。现在就要专业了嘛,对吧,现在就是专业的,你不要说呃,就是这个圈圈啊,那你不能这样子对吧,你要有专有名词,这个叫string not,这个叫job Mar,对吧,就这样才能体现出啊好,再往后走,咱们来到了执行图。
03:12
诶,大家注意执行图,首先是在哪一个组件上转换成出来的。是不是在你说job manager里面也对,但是更细节是不是job master里啊,再具体一点。创建的时候,它同时也创建了一个调度器,是不是这个调度器里面它会把作业图转成执行图,是不是啊,这是更细节的。就这里才能体现出你深入的看的源码对不对,你要不看简简单单一个job manager啊,那没有什么特点啊,来,再往下做了什么事呢。是几个转化呢?首先把昼叶图的顶点转化成。
04:01
执行作业顶点对吧?一一对应关系,那么这个执行作业顶点又细分成根据并行度是不是展开了,展开成了一个叫直行。顶点对不对啊,一个并行实力一个顶点是不是啊好,这是顶点的转换,还有呢,把这个注意顺序啊,接下来是把中间。数据集转换成了一个叫中间结果呀,同时这个中间结果是不是又可以根据它的呃,整个走向划分成多个呀,那每一个小的叫中间结果分区,小的叫分区对吧?好,那么有了这两个之后,他再根据他俩的关系。去创建执行边对不对。哎,执行边。就这样就把他们给关联起来了。那么就是依次便利一。
05:04
诶诶,咱们辩题顺序是什么。从头到尾还是从尾到前?是不是从S到think对吧,为什么要强调这个SPA是怎么样,Stage咋划分的呀,是不是倒着往前推啊啊,咱们是从前往后推前。那这样就关联起来了啊,对吧,咱们总结起来其实就这么简单,那么这些名词一些小细节你最好还是记一下对吧?带爬梯不带爬梯指的是啥呀,对吧。那么那我们这个就是一个执行图了,好,接下来我们有了执行图之后,Task是不是开始调度了呀。对吧,谁来调度。谁生成的作业图,刚才讲啊执行图。是不是调度器啊。对吧,那调度器有了执行图,是不是开始调度啊。
06:00
对吧,开始调度,然后是不是把这些task根据咱们的执行图部署到相应的工作节点上去啊。是吧,那怎么部署的,是不是通过RPC远程调用啊,网关还记得吧?哎,你这些关键点要能讲出来对吧,稍微柔和进去啊,谁的网关。Task manager的网关,那最后又转发到谁的网关?真正执行的叫什么?Task。对吧,好,到了task它是不是就开始处理了执行了对吧,好。这是一个调度过程,那怎么执行?怎么执行?刚刚讲过,这不刚刚讲的吗。呃,比如说某一个扇子。他最终啊,比如说你就给他讲,比如说某个map的算子,它,呃,就最终底层是怎么样。
07:05
是会有执行process element对吧,然后呢。里面是不是调用咱们定义的函数类重写的方法,对数据做一个处理啊,最终通过一个采集器往下游发送,你说这是最底层的一个东西,对吧?啊。这是简化版的对吧,把咱们中间那个十几部的跳转给忽略过去啊。好了,那么这个就是一个执行,好,那再来啰嗦一句,咱们的执行图到物理,物理执行图是什么?有没有明确的一个类。没有对吧,哎,我们说这种是属于马后炮,就是任务已经去执行起来了,这时候你一个上帝视角,你来看他们的一个组织关系是吧。那比如说那怎么一个对应关系呢。
08:00
一个小的执行节点是不是对应的是一个task,一个边执行边对应的是一个。对吧,啊,我们通常还是说G对吧,G输入大门对吧,那这个大门里面还封装了一个叫输入通道对吧?Input channel好。呃,还有中间结果分区就是小的一个个,这个封装成了一个。结果只分区对吧。那大的这个中间结果对应的是。结果分区啊,那么这几个基本上就OK了啊。那么这个是我们结合图的转换啊,还有稍微带的那么一丢丢,呃,Pass的调度跟执行啊,简单一点,那么。如果大家能够像这样子给别人叙述出来。足够了。足够了。
09:01
那如果他真较真,打开我给你们的。写上注释的,打上点的代码来跟我走对吧,这里这里这里啊,那就OK了啊。啊。
我来说两句