00:00
我们已经知道在flink的系统构成里边,主要就是job manager和task manager,有了这些基本的知识之后,接下来我们就可以再梳理一下link提交作业的流程了。首先我们先看一下这张图,这张图呢,整体来讲这是一个比较高层级的叭较抽象的一个图啊,为什么这么说呢?因为大家看这里边我并没有具体的说。这到底是哪种部署模式?之前我们说过,部署模式首先分为绘画模式,单作业模式,还有应用模式,对吧?啊,那另外呢,你跟不同的资源管理平台集成在一起的时候,肯定它的提交流程也会有所不同啊,啊,那这里边完全没有区分,所以我们这是一个抽象的高层级,大概它是怎么干的啊,组件之间怎么配合的,我们先看一下这个图。呃,那所以在这个图里边,我们可以看到这个具体的步骤啊,123451,一般情况下啊,是由客户端啊,也就是这里边是APP对吧,首先把这个应用是提交到分发器上,那当然就是分发器这里面提供了我们所谓的这个web UI和rest接口啊,所以我们可以从客户端这边把它提交上去。
01:08
把作业进而提交给job manager,所以提交给job manager的这个作业呢,其实就已经做了一定的处理了。就是已经把我们那个代码原始的代码解析成了作业。你既然已经获取到这个作业了,然后接下来我就去启动一个job master,就是大家可以看到每一个作业啊,应用提交上来之后,分发器提交给分发器,然后分发器把当前解析出的这个作业就会启动一个job master,然后提交给他。啊,那接下来John master获取到这个作业之后,它又会进一步的把它进行一个分析处理转换,那它会转换什么呢?就是你当前设置了多少的并行度,我要把它拆成最后并行可以执行的任务全部拆开之后,那么它得到的这个我们说就叫做一个执行图,可以执行的一个图,那同样他既然已经得到可以执行的图了,他是不是就知道一共需要多少资源了呢?啊,对吧,最后的任务都已经知道了,他当然就知道需要多少资源,所以这个时候John master就像。
02:16
资源管理器resource manager去请求资源啊,就是当然这个前提就是说。就是说这里边我们这个资源管理器是一个统一的概念啊,这里没有区分有没有资源管理平台。大家可以先把这个认为就是flink的资源管理器,那么资源管理器这里边如果要是有的话,那当然他就直接通知对应的task manager,你就直接把这个slot资源交由当前的job master去管理,去给你分配任务干活就行了,那如果要没有的话怎么办呢?没有当然就是再去启动新的task manager。那么把task manager提起来之后,Task manager再返回来,要向资源管理器去做一个注册汇报啊,就是告诉他我已经正常启动了,我这边可用的slot现在有几个,这就是说,诶,有这么多资源你分配吧,那么资源管理器就说了,好,既然你有,那么我要求你把这个资源提供出来,交给当前的job master去执行任务。
03:14
那接下来跟资源管理器已经分配完资源了,跟他就没关系了啊,接下来就是job master向task manager去分发任务最后一步,如果还要有第九步的话,那大家想到是不是就是task manager互相之间传递数据去执行任务了啊,这就是整体的作业提交的一个流程。这是一个比较泛泛而谈啊,比较抽象的一个解释,那接下来我们就会考虑到,具体到我们之前说的不同的部署模式下,或者结合了不同的资源管理平台的时候,它的提交流程又应该是什么样的呢?啊,接下来首先我们看一下斯洛模式啊。三落模式比较简单,因为没有任何的第三方的平台支持,那么他只是自己来做一个管理,之前我们也说了啊,三落模式下最常见的就是绘画模式,因为单作业模式他他搞不定啊,然后没有办法去,呃,直接用单作业的形式去启动集群,那另外应用模式它启动又比较繁琐啊,比较麻烦,这个一般情况我们也不不会去用,所以这里就是给大家看的一个是三的绘画模式的提交。
04:20
那这个提交是怎么提的呢?这里边大家需要注意啊,客户端提交任务之后,首先我们这儿是应该要有一个已经起订的job manager的,既然有job manager,那当然这个集群是提前已经提起来的,所以集群已经启动了,客户端就直接向job manager提交任务。啊,提交任务提交给谁呢?提交给分发器嘛,Dispatch dispatch这里就会去启动一个job master。那么提起来装之后还是跟之前的过程一样,我们需要去向资源管理器请求当前的slot。
05:00
如果说有的话,那就直接用,没有的话,那资源管理器要怎么办呢?啊,那就启动这个task manager,让task manager提起来之后再给我们的John master去提供slots。然后接下来John master就可以分配任务,执行任务。这就是洛模式的整体的作业提交流程啊啊,那这个过程其实会看到,其实跟前面这个抽象的流程基本上是差不多的。主要就是说我们这里会话模式下整个的这个集群啊,呃,集群这里边主要指的就是招manager了啊,啊,当然这里边大家看也没有,就是启动task manager这个过程,所以我们这里的task manager也是提前已经启动的啊,所以这一步其实也没有,前面我们说就是如果要没有的话,还去启动没没有这一说啊,已经启在这儿了,有就有,没有就没有,所以他就直接请求就可以了,请求完了之后有的话提供过来开始执行任务,这就是独立模式。非常简单。啊,那独立模式尽管简单,但是我们实际使用的时候往往是要用雅恩嘛,那所以接下来我们再看看雅恩模式下又是怎么样的一个作业提交流程。
06:07
首先是绘画模式,大家会看到这个模式其实跟前面的这个lo非常的像啊,因为我们说绘画模式下它的集群是提前启动好的嘛,启动了集群之后,那我们自然就想到了,这里边应该照manager就应该是已经已经有的,那这里边到底有的是谁呢?大家需要注意啊,起了这个绘画模式之后啊。首先有的应该是分发器dispat和资源管理器resource manager。首先有的是这俩。哦,这两个有了job master呢啊,那是需要等到提交了任务之后,有任务才会去起,对吧?啊,你只要有这两个,那当然job manager就有了嘛,有照manager当前当然集群就有了。另外当前的这个雅恩绘画模式的集群,一开始有没有task manager呢?哎,这我们说的啊,早期版本是一开始也会启动的,你可以一开始指定这个集群的大小,现在的版本,最新版本它也是动态分配了,所以一开始就只有job manager,没有test manager。
07:10
接下来我们提交的时候还是由客户端提交任务,提交给job manager啊,那那这个提交给分发器了啊呃,同样还是接下来分发器启动一个job master,然后master去向资源管理器去请求资源,这个时候大家要注意啊,这是flink的资源管理器。他自己手头有资源吗?没有,在雅恩集群里边,所有的资源都是由雅恩的资源管理器来进行提供的,所以接下来的操作是他要向上级汇报。啊,继续打一个申请flink的资源管理器,要向雅恩的资源管理器先去请求容器资源。啊,所以接下来雅安资源管理器收到请求之后,先起一个容器,然后里边跑着的是task manager,哎,这是当前我们提供的这个过程,所以大家看这个task manager,就是有需求的时候,你提交一个作业啊,提交一个任务,然后我这里边就把这个task manager提起来就可以了。
08:10
好,然后既然是兴起起来,那么我当然就是还还是要向资源管理器去注册一下slot,然后资源管理器发出请求说,诶,当前有一个作业,你得提供资源,那接下来就跟job master去做交互了,Task manager把los提供给他,Job manager把任务分发给他,开始执行。这就是雅恩绘画模式的交流。好,然后接下来我们再看一下,这是绘画模式,那另外我们之前还说了,雅安还有一个单作业模式啊,那单作业模式又是怎么样去提交的呢?看这张图,单作业模式就不一样了。当前雅安里边没有已经启动的弗link集群啊,所以就是之前这张图,其实在这之前大家应该知道我们其实是有这个manager的,对吧?啊,只不过里边。
09:00
移动的只有分发器和资源管理器啊,那现在现在就预先没有任何的移动的东西了。客户端提交任务才开始触发集群的创建,那么客户端提交的时候,他提交给谁呢?之前我们说是提交给这个,呃,装manager里边的分发器,现在根本就不需要分发器了。啊,因为大家想现在你直接提交给雅恩不就完了嘛,对吧,雅恩自己再去起嘛,你现在还没有招manager,当然就不存在分发器之类的问题了,所以第一步提交作业的时候,他是提交给了雅恩的资源管理器。然后雅恩的资源管理器呢,这里首先要启动的是。带有flink job manager的这样的一个application master,就当前我要起集群嘛,所以他启动的这个application master啊,呃,那么这里边跑的是一个job manager。然后既然我已经有了一个作业提交上来了,那对应的就要去启动一个job master。
10:00
John master呢,同样就向自己flink的资源管理器去申请资源,申请task slots,那么这个slo呢,还是要向雅恩的资源管理区去申请啊,因为当前他有上级嘛,有上级你不能越级做事情啊啊,所以还是先向雅恩去申请容器。同样,这里边你既然是缺资源,雅安就启动一个带有task manager的容器,把task manager提起来,接下来就是task manager跟资源管理器去注册,然后资源管理器说好,你注册好了,现在把资源提交给当前的master去执行,那接下来就是跟John master去交互了。Task manager提供slot job master去给他分配任务。执行任。这就是单作业模式的提交流程。所以在不同的应用模式下,不同的资源管理平台作用下的任务提交流程,其实可能说大同小异吧,但是里边的一些细节还是完全不一样的。
我来说两句