00:00
那么前面做了那么多准备工作,终于把am提起来了。对吧,终于在雅安的某个节点里面某个容器,对吧,起了一个什么呢。是不是am啊,那am里面。大家觉得他执行哪个类啊?他要执行哪个价保哪个类呢,咱们知道吗。还记得最开始我截图的时候,让大家。这个叫什么?是不是入口啊。没错,Am里面它执行的就是这个类。执行的就是这个类,这个就是它的入口类。那这个东西在咱们这里面也有体现,我搜一下。
01:03
啊,这是吧,啊,就咱们刚才这get出来传进来了对吧。这个。那我们接下来要干的是什么事呢?是不是来找这个入口类啊?入口内,然后找他什么方法呢。Java代码一个类给入口给到你,你会怎么办?是不是没方法,老套路啊,同学们。呃。虾尾。小尾,好。CTRL加N,嗯,我搜索。啊,就是这个对吧,咱们是旧版的这个对吧?啊。大家注意它是不是分开的呀。啊,分模式的对吧。你看它是不是有旧本模式的,还有三种模式,还有。Application模式是每种模式都有自己的入口类啊,哎,这个大家注意啊。
02:05
好了,呃,那么大家现在就可以忘记前面那些事了,接下来咱们是不是研究am里面怎么来启动了,对吧?就这个入口内找may方法,CTRL加F12妹。啊,这里也讲了对吧。呃,单个就是模式嘛,来执行的一个什么入口啊入口。是谁执行啊am啊。那这里面。是不是环境的设置啊。对吧,这是日志环境的设置,后面呢,获取的系统环境对吧,再往后。获取一些他需要的工作路径啊,反正前面就是什么,是不是一些准备工作啊,啊一些环境信息的获取,对吧?好。那往后呢?
03:02
参数的什么解析对吧?好这一块咱们都不用关注了。还有加载配置对吧,把前面提取出来的这些东西啊,加载进来,封装成一个配置对象啊,说白了前面这么大一坨干嘛的呀。前面这么大一坨都是不是都为了为了封装这个配置对象啊,对吧,好,那现在配置对象有了。他也用了这个入口,这把配置对象传进来,现在他是不是就知道一些配置信息了,好接着往下,既然前面的准备工作都做好了,是不是该执行了呀。好,所以核心代码就在这执行集群的入口。又一层对吧,又一层。点。哎,在下面这里还现在来到了它的一个抽象类,它的一个复类里面的一个方法,对吧?好。这里面。
04:00
获取这个类的名字吧,啊simple类是什么意思啊,就不带包名,只有类名就叫simple name对吧,咱们正常内不是org点什么阿帕奇弗link点什么一大坨嘛,对吧,那simple内的意思就是只只有一个类名啊,只有一个类名没有包名啊那再往下。这是什么?启动集群,呃,这个就不用写注释了,对吧,很简单啊,Start class。你说他何必呢,一层一层的啊。再点。点进来之后,是不是打印的日志开始启动了,而之后呢?Replace,替换graceful是不是优雅的对吧?啊,就你配置封装完你还要再替换一下对吧,这个咱们就不去看他怎么优雅呢?如果你感兴趣,你看看他到底多优雅对吧。好了,那前面的准备工作咱们就不过多去看了,好吧。
05:03
那核心逻辑应该在哪里?A。这这个是不是run方法里面传了一个拉姆达。对吧,那么他是不是调用这个方法就会执行里边的这个拉达。呃,所以其实是不是执行的这个方法啊,这个写法大家熟悉一下就行了,就前面一个run什么什么,然后参数呢,是一个拉姆达的形式,呃,拉姆达里面它会调用一些方法,那它其实说白了就是什么执行这个方法对不对?好run层层调用嘛,点那么进来之后呢。你看它是不是加了一个锁啊啊。它是加了一个锁。啊,初始化一些服务啊,初始化做一些初始化,那这边咱们要。
06:00
啊,初始化看一下吧。初始化做了什么事呢,来?是不是先创建了一个。远程的。Rpc service,那这个呢,用来干嘛?是不是用来通信的?哎,这是咱们在第二大块会讲到通信,呃,他创建这个的目的就是用来咱们组件之间是不是在不同的节点呢。那你互相之间是不是得有通信调用啊,对吧,他就是呃,用来做这个事的啊,用来做这个事儿,那你既然要跟别人交互,你是不是得有地址跟端口啊,是吧,啊等等这些啊。这就是他的一个初始化做的一些事儿啊。咱们简单写一下啊。初始化服务啊,比如说呢。
07:02
RPC相关对吧啊RPC相关啊。再往下。设置什么?老大的地址跟端口对吧,哎,这没啥讲的。嗯。那接下来又用了一个。这是不是一个工厂内啊啊,那我们说就看他创建的什么东西,对吧,是不是create,呃,接下来就是它的核心方法,他创建的什么组件。你看他的名字叫什么dispart,是不是转发器,还有什么resource manager的一个组件工厂,对吧?大家还记得jobva manager这个进程里面包含了哪一些东西啊?还记得吗?就咱们的job manager里面是不是应该有三种东西啊。第一个是不是叫dispat?
08:01
另外一个是flink内部管资源的,叫resource manager,这个不是雅安的对吧,是属于flink的,那还有一个。叫什么?是不是叫job master?对不对啊,这个是进程嘛,对吧,这是里面的一些组件嘛,啊,那这边呢,它就是开始创建对应的组件啊。创建。Job manager里的。组建啊。什么呢?呃,应该它其实不止只是创建,还有什么创建和启动。什么组件呢?Dispat resource。Manager。这一步是核心啊,这步是核心,那么接下来呢,点。
09:02
Great。大家发现又是个接口对吧,很费劲。呃,肯作家。他要早一会儿,这比较多啊,比较多。嗯。再找create方法对吧。好,搜索找到了。啊,把它收回去,现在咱们是到了一个叫什么默认的什么什么工厂,对吧,就这个里面创建,那这里面呢。又是。一大堆。呃,一百一百多行,还好啊,100多行。那我们简单看一看吧,好吧。那这边你看是不是一些高可用服务啊获取。Dispat的leader巡回器啊,说白了这个东西用可以用来找到。
10:01
他当前的leader是谁对吧?咱们做高可用是什么?是不是一个主一个辈啊。主和被对吧?那么主的话,咱们是不是通常叫做leader对吧?呃,被的话一要么叫follower,要么叫其他的,对不对?哎,这个巡逻器就是用来发现呃,调用返回,呃,当前的leader是谁?大家注意,这边每个组件都有它的高可用服务,比如说dispat,它有高可用,Resource manager也有高可用服务。啊,那这个大家知道就行了。这是他们的巡回器啊。再往后。呃,网关巡回器,当然这个。涉及到一个远程调用啊,远程调用。那这个前面这几个咱们就了解一下就行了啊。这几个了解就行,那核心逻辑在哪呢?同学们来。
11:05
这里。首先,他创建了一个word monitor and point。然后得到一个executor对吧。啊,那咱们,呃,不不不是这个啊。咱们应该看下啊,这个就是创建一些东西嘛,创建一个ex对吧,执行器又有一个执行器,它很多地方都叫做执行器啊,那么咱们这边主要看他创建了哪一些对吧?呃,主要在下面这里,下面这些就是了,你看首先是。创建了这个东西,然后呢。创建完之后,他做了什么事?这是不是创建,这是不是启动啊,那这种是干嘛的页面提交相关的,咱们是不是可以通过UI页面提交啊,对吧?哎,就是这里啊。
12:03
另外咱们UI页面是不是可以获取到一些呃旧本的信息啊,啊,也是这个东西来完成的啊。好。那之后呢,获取了主机名对吧,之后干嘛呢。这里是干嘛的?咱们就注视,咱们主要的是不是创建。Resource manager是不是在这里创建的?对吧,那我们简单往后看一眼,创建完之后。他在后面这里是做了一个启动啊。好,这里是创建resource manager。再往后呢?再往后呢?Dispatch在哪创建?在下面。
13:00
这里。这个是既创建。又启动。创建和启动啊。先把重要的地方给大家标出来啊。这里是创建和启动。第四。Hat。然后这里是。Resource manager创建已经启动,是分开的,对吧。启动resource manager,咱们先把一些主要逻辑给大家标一下啊。标一下。标一下。那像这些其他服务的启动,咱们就不去看了啊,对咱们来不影响咱们的,不是咱们关注的重点,你看到后面是不是就return了。是不是就没了,所以咱们对这个方法的总结是什么?是不是创建了几个组件并启动了它呀啊。好。那咱们现在是不是应该每一个来看一看呢。
14:07
我们先看一个什么resource manager,对吧,它怎么创建的来点。点进来之后,是不是又调用了一层啊。再点。点进来之后是个什么。抽象的对吧,选作家。啊,这个我们就看一眼就行了,那么大家觉得应该是哪一个。哎,第一个对吧,Active是吧,活跃的好,你看里面是不是分的不同的部署模式啊,你看是不是ern的,还有K8S,还有method的对吧,那这个是是真的能用的对吧?哎是为什么,看这个是不是不同的模式,它创建的方式不一样。对吧?哎,不同的部署模式它是不一样的,来我们看雅安就行了,当然雅安这个是通用的啊,只要是雅安,不管你是session per job啊,不是他走的都是这个啊。
15:10
来找搜索这个方法啊,不是这个。不是这个。那这里没有说明什么。是不是在他的父类里面?对吧,在抽象的副类里面是通用的啊好搜。是不是找到了?这个。在咱们的resource manager好了,然后呢。又调用一层对吧,哎呀,很烦再点。点过来之后,咱们看一看。点过来之后啊,再往下看。我说很烦,就在这里,你一个逻辑,你要找到他,你要一直像剥洋葱一样,你一层一层剥开他的心,对吧?剥到最后你流泪了,我刚才到哪了是吧?
16:05
咱们还记得咱们从哪进来的,不是不是创建逻辑啊,对吧,我们是不是想看怎么创建的,对不对啊,不要蒙了啊。点,呃,这个只是给大家呃看一看,你看他又又来到一个什么同学们。对吧,对俄罗斯套娃玩的淋漓尽致啊。又来到这了。呃。哦,我知道了。那咱们其实应该看什么?看另一个重载的方法啊,就在这个抽象类里面啊,看另一个重载的方法啊,那里边又另外一个active是吧,我受不了啊。嗯。然后这个里面是不是创建了一个什么什么driver。对吧,还看吗,同学们。
17:02
再看可能。你看又修了再看。终于进来了。反正呢,是不是层层进来,我们终于把它的套娃拨开了,对吧,那最后是哪个类。大家记住这个就行了,刚才那个跳转过程大家不用记好啊,大家就知道我一层一层点,一层一层点一层一层调用,最终终于进入到了resource manager这个类啊好。那这个类呢,它是一个抽象类,其实。啊,我给大家看一看。他是不是又又分好多啊啊这个咱们就不再看了啊。所以他的创业过程好玩吗?不好玩对吧。啊。我们说最终,呃。
18:02
就雅安模式的resource。Manager。这是不是咱们得到的结论呢?这个resource manager是不是雅安类型的?对不对,它是有一个driver的,同学们,可能刚才大家没注意看啊,我也没注意讲啊,你看它是有一个类型叫Yan resource manager。Factory对不对啊,是雅安模式的resource manager工程,那里面其实有一个这种driver是这个呀,说白了想说什么前缀是不是带雅安的,那如果是stand alone是不是带STEM前缀啊。啊,就是这个意思。啊,这个就是一个创建过程,呃,大家刚才跳来跳去的啊,不用管,你就记住这句话就行了,好吧,雅安模式的。Results终于把它创建完了。
19:02
那么再往下是不是应该该创建什么?该创建dispart了,对吧。哎,我这边说的是不是他既创建又启动啊,哎。那这个呢。咱们就留到,因为这个还比较长,同学们。这个比较长啊。咱们后面再接着讲啊。
我来说两句