00:00
那么昨天咱们一整天呢,主要讲了一个点什么呢。基于雅安和job模式的整个提交流程,那咱们看的是比较详细的,对吧,那么首先我们说呀,呃,我们整个程序怎么开始提交的呀。是不是咱们执行的一个flink乱了对吧,或者杠T或者杠M去指定啊,如果是杠T的话。就是雅。Per job啊,然后呢,杠C对吧,全类名啊,然后呢,就是一个架包啊架包。所以我们找的话,是不是找这个flink脚本了,那么在这里边我们找到它入口是什么呢?是不是应该叫FLY方的对吧?哎,那么从这里面我们找他的may方法。那main方法里面,我们能看到他主要做了几个事儿,对吧,首做了啥呀。
01:09
呃,是不是有一些参数的解析啊,对吧,还有一些参数。参数解析,还有呢。还有封装。一种叫。Command line命令行接口对吧?好,那这个是有三个依次添加对吧?啊依次添加好了,那在后面是不是关于配置方面的设置啊,啊配置的封装是吧?啊还做了什么事啊。革命,那么是不是要执行啊,这些前期动作做完,是不是要执行用户代码,对吧?那我们说用户代码主要看哪一个。是不是最后一个。对吧,那再往后呢,我们看到了啥呢。是不是在这里面它,呃有一个小细节比较重要,它是不是生成了一个流图,对吧,根据咱们的代码生成了一个流图,那么在之后呢,是不是该进入到。
02:12
啊,准备跟雅安交互的一个阶段呢,那接下来它是有一个叫。一个对吧。这个是属于啊,名字很长对吧,雅安job class什么,呃,对吧,一大坨,那在这里边做了什么事。我们是不是根据。流图生成一个,哎,对,为什么要强调这个,因为它做了一个很关键的步骤啊,生成一个作业图,好,那么再之后呢,是不是创建了一个叫集群描述器的东西啊。对吧,那在这个描述器里面干的啥呀。上的阐述的。
03:03
啊对,他是不是上传了一些价包啊,还有配置啊,对吧?哎,好,那么这个做完之后,上传完之后是不是还有。封装提交的命令啊,提交给谁啊,提交给雅恩嘛,是不是好,那最后呢,是不是通过雅恩客户端去提交应用啊。整体差不多,我们简单梳理的话,是不是有这么几个步骤啊,对吧,这是粗略的来看啊。那之后呢,提交之后,雅恩是不是对应的找一个节点启动am啊,Application master,那么在里面它执行的入口是什么呢。是不是一个叫雅叫吧,呃。什么来着?
04:01
安。Point是这个名吗?我找找啊,名字太长了啊,对呀,雅安job克拉entry point。这个是不是在这里啊,我们说这里是am直行啊,对吧,Am直行这个。的入口类啊入口类,那我们是不是也是找他的main方法呀,那这里面主要做了几件事,哪几件事啊。是不是一个。Disparture。的创建和启动吧,还有呢,Resource manager的创建还有启动对吧?好,还有一个第PA去启动job master,哎,好。呃,那其实还其中咱们有几个细节对吧?哎,比如说呢,这个resource manager里面,我们说里面有一个叫什么slo manager,我们说它是真正管理资源的啊,真正管理资源的好,那我们说job master里面有一个slot to啊,真正去发送请求的是吧。
05:19
那么还有吗?嗯。呃,咱们这边sloter manager还可以再加一个对吧,还有说向雅恩申请资源啊,是不是都是这个sloter manager来干的呀啊。好,那么这中间其实呃,我们当时这一块,呃,大家回想起来可能很多对吧,都有一种,大家注意他们启动的时候是不是都有一个选举啊。对吧,Leadership还记得吧?啊,每个组件都有那个咱们不啰嗦啊,那个不是重要的啊。我们就讲核心重要的过程,好,那之后他还做了啥事啊。
06:06
启动完之后是什么?是不是slot兔像谁啊?Slot manager申请资源,哎之后呢,Slot manager向雅恩申请启动节点对吧。也就是呃,申请资源对吧,那他们他会去启动新节点对吧。这个节点指的是谁呀?Task manager对不对,哎,小弟好,那这一块咱们am是不是主要做的事就没了呀,对吧,那在之后呢。是不是小D的启动啊,那我们说如果是雅恩,基于雅恩的部署模式啊,它的小D的入口类叫雅恩。呃。
07:00
Is cut。Runner对吧,诶有没有task这个字,有吧,对吧,我们说这雅安模式的入口类啊,我们说这个是task。Manager的入口啊。我们说雅恩模式下的。Task卷的入口类好,那么在这里面呢?他干了啥呀,是不是启动task ex对吧?呃,咱们我们现在简简单单一句话,追圆满的时候,是不是追老半天层层调用层层调用啊。好,启动完之后呢。是不是开始向?Resource。Manager注册。对吧,注册什么slot啊。好。注册完之后,我们。
08:02
还有。是不是resource manager?分配slot。对吧,好,再然后呢,我们说task接收到分配的指令。然后呢,他就怎么样提供offset给谁呀。啊,给啊,不是get啊,Gay叫吧master,哎,其实是它里面的谁啊,Sloter poor对吧,哎。完了之后。然后呢,老大就怎么样啊,不叫master是不是就呃,提交任务给。Task exe去执行啊,就整体呢,咱们梳理完就这么一个呃,简单粗糙的过程,对吧,这是我们自己啊做一个回顾啊,那么接下来我们再把这个PPT过一遍,好吧,啊,这个图啊,加深了一下印象。
09:18
啊,有点慢啊来同样呢,咱们在命令行输入了一个提交命令flink run啊,那么之后呢,我们说入口是这个flink脚本对吧,我们找到入口是一个class啊。那在里面他做了参数的解析,选择了命令行客户端对吧?呃,执行用户的代码生成流图,呃,这跟刚才是不是一样的啊,那在之后呢,有一个叫集群的执行器啊,这里面呢,它把咱们的流图转换成了作业图。再之后呢,又有一个叫集群描述器。在这里面呢,上传了一些价包配置到哪里啊HDFS对吧?呃,在之后呢,封装呢,要提交的一些命令和参数啊,在这边是提交给雅恩的啊,提交给雅恩的,那最终封装完。
10:16
雅安客户端啊,就正式的去向雅恩的resource manager提交了啊。调用一个submit application方法,那么雅安起的找到一个节点去启动了am,对吧?Application master在之后呢?在这里面我们说三大组件,第一个dispat的创建和启动,第二一个resource manager的创建和启动,那么它里面呢,其实有一个叫slot manager,好。那么另外dispat启动的时候啊,它会去启动第三个组件叫job master啊,那在job master里面呢,有一个东西叫。Slot铺好。
11:01
呃,之后都起起来之后啊,它根据它这边应该还有一个小细节,它job master启动的时候,它其实啊会生成执行图啊,生成执行图。那么他根据他有了这个图,是不是就知道咱们整个计算的一个分布啊,啊一个计算情况对吧,那相当于说方案做好了,接下来是不是落实请求资源了,对吧,他根据这个图呢,就去注册和请求slot。那么这个slot manager接收到请求,哎,我们说真正管资源,他手头上没有真正的资源,对吧,他只能向雅安去再申请啊,启动一个新的节点。那么雅恩选择了一些节点,启动了容器。那是不是该执行那个入口类了task runner啊,那我们说这里面最终啊,它会启动一个叫task ex的东西,对吧?啊,那这个里面呢。
12:04
呃,他是不是相应的有对应的槽啊,封装了对应的槽,那启动完它是不是要向slot manager进行一个注册,对吧?汇报一下,我提起来了,我现在有几个槽。那么这个槽管理器接收到之,呃,每个点的注册之后啊,他对这些槽位进行了一些分配是吧,进行了一些分配啊。那这个task接收到分配的情况啊啊,知道自己该做什么事了,那么他就像老大,也就job本master里面的slot tool这个陶持啊呃,告诉他,诶我这边呃安排的三个小弟已经到位了啊,你可以准备把任务发过来了是吧,已经准备好了,那然后呢,他老大job master就会提交task到小D上面,也就task之后呢,就开始执行了,那么大家注意,呃在呃额外提一句,这个提交task。
13:08
在流逝的模式下,是所有的task一次性发送,能理解我意思吧?是一次性,不是说前面执行完再执行后面一个咱们flink是不是没有Spark那种stage的概念。知道吧,啊。尝试一次性。都往外分配了对吧?啊,就相当于一口气把小弟叫在一起,直接当场大家一起下达任务啊,是这么一回事啊,当然这个细节咱们在第三章啊会提到啊。
我来说两句