00:01
好,那我们之前呢,呃呃加载完配置的解析完的参数,呃,判断完了命令行客户端是吧,那接下来我们跟着这个run方法往后接着看主要逻辑,呃,那这边呢,它是再往下一行。这个是什么呢?啊,Flink封装了一个叫program,就程序嘛,这是程序的意思啊,就自己做了一个封装,这个咱们不用去关心它本质呢,还是根据咱们输入的参数,还有前面选择的那种客户端,对吧?啊是咱们是不是基于雅恩的呀,对吧?啊这个好。那再往下看,哎,这一行。其实呃,我觉得他弗Li源码好的一点就是什么呢?他方法名起的很直白,你可能读他的名字你就知道了,对吧。但不好的地方是什么?很多时候太啰嗦了,点进去掉了十几层啊,对吧,很烦啊,没有大家之前看Spark Spark那个源码是不是很清晰啊?
01:09
相对清晰一点吧,没有啊好吧,啊,可能时间太久啊,时间太久来咱们接我看这个里边这个是什么呢?获取脚本。还有。啊,旧宝的架包对吧,还有依赖对吧,很直白嘛,那旧宝的架包是什么呀?是不是咱们代码写完打的包啊,哎,就是这个东西啊,来我们简单瞅一眼嘛,这个没什么,呃,太多的东西,首先呢,它获取了一个entry point是入口点的意思啊,入口点对吧,说白了就是入口,也就入口类名啊,对不对,咱们是不是指定的杠C啊。我们说那个是入口对不对,好来点。你看它是一个什么。
02:00
入口的class,再点。呃,你看他啥时候赋值的,呃,咱们简单瞅一眼好吧,我也不慢慢去看了,我点击它可以看到在这里。他之前new啊,就是在上一部create的时候,咱不是没看嘛,啊那啊行吧,那讲了就讲了吧,总想跳过也不好是吧,就是这一行他怎么创建的呀,哎点。调用了一层对吧。呃,先判断,如果是Python的或者什么跟Python相关的走这对吧,如果不是走这对吧,那咱们是不是走这啊。好往里看,利用了一个这个对象,你看啊。是不是这个东西。它是怎么赋值的,你看option对吧。判断一下有没有它,有的话三点表达式问号冒号还记得吧?好,那就是get一下啊,说白了啰嗦那么多,我们看这个是啥的点。
03:05
是不是杠C啊。四杠C啊,加载咱们的杠C啊。好了,那其他的像架包的文件路径对吧。是什么配置相呢点。啊不不J对吧。杠啊。就是咱们额外指定的价包啊,额外指定价包好。那其他的也没像什么class pass是不是类路径啊啊,同样的有这些东西好吧,啊,那还有一堆的并行度。对吧,是不是get并行度啊,是不是杠P啊啊对吧,这边大家都能找到对应的东西,好吧,那咱们也不过多去看了,有很多对吧。还有什么detach啊,这个是杠D对不对。杠D啊,分离模式啊。好了,那我们回来吧,啊啊,不要看那么多了,对吧?啊回来好,回到咱们run这里,呃,这个时候咱们再看这个就很清晰了点,那这里是不是咱们杠C的那个全类名啊,对吧?另外是不是咱们杠C指定的架包路径的话,它是从这呃读取啊。
04:19
呃,然后呢,再调用了一个。获取价包啊,还有依赖啊,咱们打的包还有依赖。好,再点。那这边就是做一个循环遍历,然后去什么ADD就行了,那这边也没什么重要的啊,这块咱们就呃简单瞄一眼就可以了,知道他干嘛的啊,回来回来好。头痛,这是什么?呃,获取杠C。呃,获取用户的价包吧,好吧,这样子和依赖啊和依赖啊。
05:02
和其他依赖啊。好,再往下看一个核心逻辑。获取一个什么配置对吧,怎么又来一个配置很烦,它前面这一段的验证啊配置啊,套来套去的会比较烦啊呃,那这个是什么意思呢?我们拆方法名是不是有效的啊,获取有效配置对吧?那这个是咱们获取的,咱们雅安的话是不是雅安client对吧?或者jaric对吧?看你有没有指定杠T对吧?呃,比如说是雅安。Active active,咱们前面是不是做了判断这里啊,对吧,好。那还有一些配置项,还有架包啊,都在这里啊,我们看看他做了什么点。那么里面呢,主要是不是这一行。
06:00
是不是又封装了一层啊啊,又调用了一层来再点。点完之后我们看一下,利用了一个对象之后呢,调用了一个。调用了一个啥呢。咱们用这个活跃的命令行对象是不是,呃,咱们之前那三个判断出来的,呃,然后调用一个to configuration啊。这边咱们就要看这里了,这一行。点是个什么呢?是不是接口啊。那找咱们具体的实现对吧,好找哪一个。雅安的对吧,好。就咱们这个雅session,那么里面。我们简单瞅一眼他做的什么事啊,什么叫有效的配置啊,来你如果大家不想看这一段啰嗦的逻辑,就各种判断,对吧,有没有这个配置,有的话get一下对吧,都是这样子对吧?有没有啊,有的话get一下对吧?好,那我们直接看最后,呃,也不用看,最后我们看它每一个插入了什么核心逻辑在是不是这种这种啊。
07:20
有效配置往里配置的什么,对不对,那我们你看配的什么。是不是高可用啊,呃,它前面这一块是判断有没有高可用对吧?哎,高可用的ID还有呢。是不是雅安的应用ID啊,还有呢。是不是target是一些执行器啊。对吧,呃,这个你看它插入的是什么。是这个对吧,这个咱们看过的同学们是不是一些字符串呢。你看又一层嘛,再点是不是就还是这个东西啊。对吧,就把它设置进去啊,返回返回。
08:00
对吧,这个东西。那如果不是。它差的是什么,这边就是如果是这个他就插session,如果是另一种就差就吧,对吧,啊就做一个分支判断而已,好吧。应用ID不存在说明什么,之前是没起啊对吧,Per就不就限起的吗?如果存在不就是session吗?已经起的吗?对不对?好,再往下走还干的啥,咱们就抓住这个东西就行了。这是什么?Total process memory,谁的呀?是不是job manager的内存啊,啊总内存对吧,设置了一下啊再往后。这里。Task manager的总内存对吧?啊,那为什么叫总内存呢?咱们看到第四章大家就知道了啊啊,内存结构大家可以理解为就是task manager的一个内存量就可以了啊。
09:06
那你看还有什么。Task s。是每个task manager上面有几个槽啊,有几个slot是不是好?还是找这个对象,还设了啥呢?这是动态配置啊,动态配置,然后也不用关,不是主要的啊,没了是不是主要这几个。是不是主要这几个。说白了就是把前面解析出来的配置,再提取到一个叫有效配置,这里面都把它提过来啊,把它提过来。好,那咱们返回吧。咱们把这写一下。再返回,返回到run这里。我们说获取有效配置,哪些有效配置呢?Ha的IDE是吧,还有什么,呃,是一个。
10:08
啊等等,还有还有那个叫什么来着。内存肯定有对吧,啊,还有那个target对吧。他给的不是分为三呢,还是对不对啊,我就简单标一下还有什么。是不是job manager内存?Task manager内存。每个。每个TM的槽slot数啊,对吧。啊,还有一个动态配置啊,咱们就列几个就行了,等等等等等等。那接下来呃,它会做一个打印对吧,这个其实在大家启动的时候,这边能看到一些信息的,就是这里啊,就是这里。嗯。前面有没有太长了,没有了是吧,那么大家可以启动的时候关注一下他打印的日志是有这个东西的啊。
11:08
就当前生效的配置,后面呢,把咱们封装好的program,呃,程序跟那什么有效配置一起。再封装成一个什么。已打包的程序对吧,啊,又封装了一个对吧,这是他自己封装的类型,这个无所谓,接下来核心逻辑这一步。执行程序啊。执行程序。好,接下来咱们就要跳走了,同学们注意了啊,要变了啊。执行来一点。是不是又一层啊?啊,没事继续点是吧,再点。点过来,现在我们看是不是启动程序啊。
12:00
好,现在进入到了client u客户端工具类,对吧?哎,我们已经变了啊客户端工具类,那这边做了什么事来首先。咱们也不回去看了,因为这样绕来绕去,咱们看名字就知道了,是不是用户的代码。用户代码的类加载器啊,说白了就是咱们写的那个类嘛,对吧,加载器把它获取出来。诶之后是不是设置进去啊。对不对,设置到当前线程吧,啊,那我们知道就行了,那后面他做了什么事呢。这一块是啥呢?这一块是不是一个上下文对象环境的上下文呢。是不是,那这个东西有什么用呢?大家还记得咱们写代码开头第一行是什么?是不是获取执行环境啊。
13:00
Execution environment,然后get一下对不对?那么大家想过没有,他get从哪来的?你什么都没指定,他怎么就知道啊?这里。这里他已经设置好了啊,已经设置我们get的时候就是从这里直接拿的,所以不用我们做啊。呃,这边写一下吧。配置,呃,执行环境对吧。执行环境。我们说用户代码里的。Get execution environment。就会拿。这些拿到这些黄金信息对吧。好,这是这一块啊呃,那接下来哪一个呢,这里。
14:04
一百一十五行。Invoke这个词大家应该要很熟悉,它什么意思呢?调用的意思。啊,调用好,调用了一个什么模式for execution对吧?好,反正就调用往里看。Call main method,这个main class是什么呢?是不是用户指定的那个类啊啊,那感兴趣你可以去点一点啊,看它是怎么加载的,对吧,你看它有一个load的main class啊在这里面。那这种无关紧要的小细节不用去看了,对吧,这个大家知道是用户指定的那个全类名好吧,然后呢,Co是不是调用啊回呃,调用主要方法对吧,还要把参数传给他呢,点呃进来之后呢。
15:00
看这一行啊,前面这个是做一些判断是否是public对吧?啊,这些判断我们就不看了,那看这里是不是获取什么类里面的什么。没方法对不对,好,现在拿到may方法了,May方法之后在这这边抛异常不用管判断,呃也不管了,之后核心逻辑在这儿。是不是这个main方法执行了一个什么调用,那是不是就开始执行用户的代码了,对吧,也所以入口在这里同学们。调用用。用户代码的main方法。对吧。所以他这个执行过程大家应该就比较清晰了,对吧。好,我们把重要的几个方法点一下啊,让大家回头看的时候好找。
16:01
那么到这呢,经后面呢,就是呃,开始调用用户的一个密方法。
我来说两句