00:00
对了啊。那么接下来我们通过一个动图,把咱们之前的一个过程啊,简要的再梳理一遍啊,那么这个呢,大家一定要去掌握的啊,一定要去掌握的。好,那这边是有咱们的PPT对吧,双击打开。啊,卡住了,好打开了啊,我做的是动图啊同学们。是一步一步的,很清晰的,你不要只看一张图啊啊这样浪费的辛苦的成果,对吧?来咱们基于雅安job模式的一个提交流程,首先。是不是有一个脚本入口啊,对吧,叫什么?哎,咱们比如说执行的这个命令flink run-T雅安job是不是,哎之后呢,入口是什么。是叫一个cliented是吧?啊,就一个客户端的一个入口啊,客户端的前端对吧?好,那这里面做了什么事,想一想。
01:06
解析参数吧,对吧。是不是解析的参数啊啊解析什么呢?咱们这些杠T-C还有run也算对不对啊解析这些啊,除了flink这个命令之外的其他参数。它是不是会解析是杠还是杠杠啊还是值对吧?啊都会去解析,那么解析完之后,它是不是对这些命令行提供了一个接口啊,叫command line对吧,里面是不是添加了三个。对吧,一个叫generalric,一个叫雅安session c,还有一个叫default,而最后他是不是挨个遍例挨个判断是吧,优先判断generic generic是不是就是指定的杠T啊对不对,好那么如果延。CRY呢?第二种是什么呀?它是不是基于雅安的?有没有应用ID啊是吧,哎,有没有。
02:04
那个叫什么?或者命令号有没有指定应用ID,就是说白了就是什么雅恩能不能找到这个应用对不对,哎,如果有的话,他就用雅恩session对吧,那这边我举例讲的是什么。啊,Fli雅安client对吧,所以这边应该用杠M的形式啊,杠T应该是generate是吧?啊咱不啰嗦啊,那选择了这种接口之后,那最终。是不是封装一些配置啊呃,调用啊,最后呢。是不是VO用户的代码。对不对,就咱们自己写的代码那个main方法,那最后一行咱们是不是执行了一个E。对吧,哎,咱们核心逻辑在execute,所以呢,在里面他是不是做了一个事啊。是不是根据咱们的代码生成流图啊,对吧,逻辑流图stream graph,好,这个是这边做了几件事情,总结起来就这四个啊,那接下来。
03:08
接下来。咱们干嘛呢?特模式,它是不是要起集群呢?对吧,那我们是不是有一个东西叫集群。执行器啊。试试它调的调用的excute方法。对吧。诶,来。在这个执行器里边,他做了什么事?是不是生成的。作业图啊,还记得吧,那作业图之后是不是该来到集群的启动那那一块了,好,我们再接着走。是不是有一个东西叫集群的描述器,还记得吧?啊集群描述器,那这个描述器里边做了啥来。是不是一大坨300行的上传了,还记得吧,上传价用户代码价包配置文件是不是都传上去了啊,还有那个作业图是不是也传上去了,对吧,作业图。
04:08
这还记得那300行吗?对吧,啊300行,那接下来是不是封装application master的各种各种环境信息和配置啊,还记得不?是不是也是挺长的啊。最终呢?这些做完之后呢,是不是有一个雅安客户端。对吧,那么这个雅安客户端是不是执行的提交。提交给谁呀?雅恩的resource manager是不是,哎,是不是一个执行一个submit提交对吧?好,那么接下来呢。它是不是开始启动一个容器啊,对吧,里面是不是启动am啊之后呢,Am是不是通过一个。
05:00
集群入口啊。什么entry point,然后开始执行对吧?哎,那这里面它是不是会启动。先创建启动什么?是先启动了一个转发器啊,那这个转发器做的啥事。当然我们那个resource manager是不是也启动了,对吧。再然后这个转发器会怎么样,是不是启动一个job master对不对,是由dispat来启动的,那这里面大家注意是不是有一个槽插槽的池啊池子对吧?好,那这个呢,它是不是。接下来呢,提起来,他提起来之后,是不是应该向他请求啊好。啊,当然这边还有一个细节对吧?呃,在这个jobva master启动的过程中啊,它其实是做还有一个小步骤,把作业图转成了执行图啊,这边是在调度器里边,我没有咱们没有去细看对吧?啊,这个也没事,咱们知道一下啊,记住这个点就行,接下来。
06:11
他。Job master里面的曹持是不是向resource manager里面的管理器申请啊?注册请求slot对不对?之后呢,这个槽的管理器是不是向雅安去申请新的。Worker。他是不是就选择了某些节点去启动容器啊?对吧,哎。启动完容器,它里面是不是有个入口类啊,执行一个入口类,哪个入口类啊。是不是叫雅安task runner这个东西啊,还记得吧?哎,这个是它的入口内啊。诶之后呢,在这里面是不是通过层层调用启动了一个什么。
07:01
Task对吧,我们说这是底层真正的名字嘛,对吧,那这个里面是不是有一些槽啊。对吧,好,这个里面有一些槽,好接下来呢,启动完之后它会做什么事。他是不是应该向草管理器做一个注册呀,哎,你看task向resource manager里面的。槽管理器注册啊,大家注意我箭头是打到他这里的啊,注册槽,那注册了之后,这个管理器是不是告诉他。啊,我做好分配了对吧,哎,应该怎么去用,大家该怎么去分配,对吧,告诉他,那他拿到之后干嘛呢。小弟知道之后,他就像去找老大。找老大里面的这个陶持啊,潮持告诉老大,哎,老大我根据要求我给你提供slot来了啊,是不是这么一个过程啊。
08:05
那最终呢,这个老大,呃,这边他就会,呃,把一些任务提交执行过来啊,提交执行过来。好了,那咱们这整的一个过程不复杂吧。对吧。这,这个还复杂,同学们。这个。这个还可以吧,鼻炎工作机制少那么一点吧,啊,因为省略了一些不必要的东西啊。来这啊,那咱们快速的过一遍,好吧,再来一遍,我再讲一遍啊。来雅安job模式啊。首先呢,是不是执行脚本呢?啊,这是咱们命令行输入的提交命令之后呢,是不是有一个。
09:00
这个flink脚本最终是不是执行的这个类啊,入口是这里对吧?Client front客户端前端啊,那这里呢,首先对咱们后面传的这些参数做一个解析啊解析那么解析完之后它会选择一个命令行客户端对吧?那么它是有顺序的,分别是。Generic还有雅安的,还有default对吧?哎,那么它是依次去做判断啊,用哪一个啊,那咱们这边雅安模式用的,比如说是一个flink雅安session,那之后呢。是不是要执行咱们用户的代码,就咱们自己写的main方法对吧,咱们自己敲的那一坨代码啊,那最终它调用到执行环境点cute啊,那么在这里面呢,往后它首先是根据代码生成了一个流图啊。好,生成流图之后呢,会来到一个集群的执行器,在这里面呢,它会生成一个作业图,把咱们的流图转成作业。
10:07
之后呢?有一个叫集群描述器的东西,集群描述器啊。描述器里面,它这边做了很多的上传动作,上传到HDFS啊,就把一些价包,还有配置文件,包括你的代码啊,包括作业图,它都传到HDFS啊。后面呢?它封装了,要后续要启动am相关的一些提交参数啊,环境配置啊等等啊等等啊,做了这些事啊。那一些环境配置封装好之后呢,通过一个雅安的客户端,调用一个提交方法,把它提交到雅安的resource manager上面去。在之后呢,呃,是不是选择一个节点启动容器开始要执行am了,那这里面我们说它的入口内是不是那个。
11:04
什么class entry point对吧?那这里面它是不是分别会创建和启动三个组件呢?哎,比如说有一个dispat,还有一个resource manager。好,那还有一个组件,大家注意是由谁启动,是由分发器来启动的,哎,分发器启动叫本master,那么master里面有一个槽持啊,这个大家一个小细节啊,好,那么接着往后呢,这个job master生成的时候啊,它会把作业图转化成执行图啊,他有做了这么一件事。那之后呢,他通过他的曹持向resource manager。通过他的曹持向resource manager请求slot。那这个槽的管理器接收到请求,因为他自己没有真正的资源,对吧,他是不是得向真正管资源雅恩的resource manager请求啊好。
12:05
他向雅安去申请资源启动容器啊,Request new worker啊,那雅接收到请求,是不是就根据他的需求去启动了呀?啊,选择一定节点启动容器,然后呢。也是不是开始调用执行它的那个main方法对吧,那个入口叫什么呢?雅安task runner啊,你要记住runner啊,这是它的入口类啊。呃,然后这里面呢,它就会最终会启动一个叫task对吧?啊,这是真正底层的一个名字啊。哎,然后呢,这里面是分了各种有有槽啊对不对,好,那它启动完之后啊,它会向resource manager里面的槽管理器做一个注册,哎,告诉他我提起来了,我有几个槽,那么这个管理器接收到之后啊,它根据它的前面的这个请求。
13:02
根据他请求的一个数量,再根据注册过来的数量做一个分配,分配他把分配的结果告诉每一个节点,对吧,这边我只画了一个节点啊,告诉每一个节点你需要提供几个对吧?好,那么这些工作节点,也就是下面这些task manager节点,他接收到分配之后命令之后啊,他就会向老大,也就是job master里面的曹持诶提供slot。就按照他分配的命令去提供啊,那最终呢。呃,老大呢,呃,接收到小弟提供过来的一些草之后啊,他就把。根据根据作业图,把相应的task诶部署到对应小地上的槽上面去执行,这个呢就是整体的一个过程。
我来说两句