00:00
接下来我们看一下它start APP master里面的主要逻辑啊,它是怎么来启动am的啊,做了哪些事,那这一块的代码是比较长的,但是呢,咱们就把它梳理梳理呢,哎,还是比较简单的啊,那首先呢,咱们看它做了一个什么初始化文件系统,什么样的文件系统呢,大家觉得。是不是HDFS啊,这一块不管是Spark也好,Flink也好,只要是基于雅安模式怎么样,是不是跟雅安的提交流呃工作机制有关系啊啊大家想回忆一下咱们呃之前学的雅安的那个动图。是不是先请求再返回再往HDFS写啊,啊,其实就这么一个过程,来我们来看一下它首先呢。初始化和创建的一个文件系统,那这个呢,为什么说是HDFS,我们点一下看是哪里的类啊,往上翻大家能明显看到哈杜op对不对,FS好,那这一块你看一下子不就看到好多行了嘛,对吧?啊,那后面这边是做一些判断对吧,是不是是谷歌版本的阿杜是吧。
01:22
来这一块就是文件系统啊,注释写一下啊。土豆。初始化创建哈杜的。A fire system。好。那往后呢,你看啊,获取了一个。应用提交的上下文,那我们知道上下文有什么特点,是不是封装了一些。环境信息啊,哎,所以大家可以预想的到,后面肯定他调用了很多set啊,这个大家留个印象就行了,再往后看。
02:10
像这种获取。什么?远程路径吧,说白了是什么呢?我是不是要把这个job相关的包要传到哪里去啊?对吧,他获取的就是这个啊,获取的就是这个。他到时候就上传到这个路径啊,之后呢,把这个上传的路径封装到哪里呢。他又做了,做了一个工具叫。雅恩应用文件上传器,哎,就有一个上传器的东西,你看把文件系统把咱们的路径。是不是这些都把给他放进来了,现在是不是我们只要看这个上传器就行了,对吧,好。普渡。我们说人应用的。
03:04
文件上传器对吧。有什么有FS有。嗯。对应的HDFS路径对吧,啊等等啊。好,接下来就要接下来有很大一块的代码都在用这个东西啊,Fire upload。好,那首先他传什么呢?先判断了一个叫。Shift shift是传的意思对吧,哎,说白了就是需要发过去的文件,如果你不指定呢,它是没有的,它是空的对吧,他就遍历一下这个参数at进一个叫system。哎,我们把这个东西。呃,只要他的名字就行了啊。
04:00
就是这个东西。贴过来。接下来你看他逻辑是什么,诶判断一下这个有没有,有的话便利添加进来,再判断一个什么这个。是不是一样的配置,获取什么应用log配置文件,这是什么?这个其实。来给大家看一下OPT model flink-1.12.0对吧,在咱们的配置路径下面有这么一个配置文件。Log佛经配置文件啊。好获取到配置文件路径是把它按进去啊。对吧,哎,再往后。呃,又获这个获取了雅恩的应用ID对吧?好,应用ID有了之后,再往后是不是获取了一个JK的命名空间呢。
05:00
啊,命名空间,如果我们平常是没指定啊,没指定就是default默认的啊,有一个默认名好吧。好。再往后。是否是高可用模式吧?高可用讲过了,大家都配过,那里面咱们是雅安,雅安是怎么高可用的。是不是挂了重新拉起来呀,是不是还可以配置一个次数啊,哎,你看就是这两个。你看如果配的高,可用它set一下什么呢?最大应用重试吧,哎,你看它的参数值是多少啊,配这个application。Attempts是不是咱们在阳刚site里面配的呀,对吧?诶这个东西给是不是这个东西。有印象吧?
06:01
好,那如果没配呢,后面这个参数什么意思,如果这个没有,那就找这个,这个是默认值,默认值我们看一下。二对不对,默认是二啊,如果你不配,默认就是二啊。那就没了呀。啊,这边把几个。干的事写一下啊,我们说。高可用的配置。高可用配置对吧,我们说一个重试次数默认两次对吧,这是咱们知道的。那往后呢?往后往后往后这边呢。又利了一个这个东西对吧。这是用来放什么的?用户的架包对吧?呃,那他他这个架包信息后面存在哪存在作业图里面get用了价点string.map这是不是一个。
07:08
Java里面流失调用啊,对吧,好。然后呢,就是去指定,哎之后呢,把它添加进来就行了啊。那我们知道这边添加了一个用户加包啊。添加用户,加包好再往后看。呃,这边。又加了一些什么呢?来驾驶。我看这是什么,呃,这个是其他的包了啊,这是其他包。这啥吧来着。啊。PI价啊,反正就一些价包嘛,无所谓跟用户价包相关的,可能会用到的一些东西吧,啊来接下来。
08:09
只用于模式对吧,这边呢,呃。我们他做了什么,就上传了一些东西啊,上传了一些东西。是不是这个上传器啊。对吧,上量器是不是一个调用的。一个上传的动作。啊,就一个上传,呃,总结就是上传的一些东西啊,上传一些东西。好。那往下走。这个东西是不是刚才拗的这个啊。这个list往里面ADD了很多东西,对吧。是吧,比如说是不是还有一个是log房间的配置啊,对吧,他把它插到这了啊。
09:00
啊,这个不看了吧,这个看的话。他又又叫一个有效的shift,其实就是再包了一层对吧,那这个咱们也不用关注了,再往后看呢。注册所有的文件在什么提供的路径,哪个路径啊,HDFS。把它注册成本地资源,本地资源。嗯。它是公共可见的对吧,啥意思啊,这其实是雅安的一个动作,咱们每个节点执行的时候,是不是得先拉到本地啊,本地是不是有一些临时文件呢?啊,就干了类似这个事儿啊。干类似这个事儿。啊,其实就是一堆上传了这那的对吧,啊搞那么复杂干嘛对吧。再往后。是不是又是这个东西啊。是不是又注册到本地啊是吧,好。
10:04
再往后看。呃,这边大家简单扫一眼就行了,可能有点多一点,那你看这里是不是又开始注册了。对不对。是。用户的什么?用户的价包吧,对吧。好,再往后看啊,是不是很烦啊。呃,然后对他们这两个东西封装好的做了一个什么排序,排序完之后呢。是不是开始封装了一个叫class pass的啊?当然这一块没什么重要的,我们简单瞅一眼啊。啊,反正前面这一块。呃,包括下面这一款很长的都是一些上传价包上传配置,上传价包上传配置对吧?啊,但你看这里又上传了一个flink价,这个是什么?这个是雅安启动集群需要的依赖,大家知道咱们flink集群主要的依赖都在哪里吗?
11:09
这个。来立本目录下面这个包。大家不是很奇怪吗?雅恩为什么能够帮我们启动啊,它的依赖是从哪来呢?是不是因为我们上传了,他能够去加载到啊,哎,那主要的包就是这个啊,那包括大家如果编译源码,编译出来的包也是主要拿这个包。啊。啊,先来做一个了解再啊我们快速看吧,这边都没啥。那这边呢,850几行,这边。把作业图写到一个临时文件。呃,这个只是它的防止出意外嘛,写在您本地的,你比如说啊,我在哈杜一上面执行的提交,它执行一半,他会在我的tmp目录下面。
12:06
这边它会生成一个跟应用ID相关的一个临时文件,那传完之后他又把它删了,所以这个大家不用去关注啊,不用去关注。哎呀,终于上传,还在上传,接下来上传什么?弗的配置文件对吧,我都快大家是不是快被他上传吐了对吧啊,但确实人家上传的很仔细吧,对不对啊。这个是什么fli格杠控点鸭啊,哎,你看这不有吗?对呀。呃,咱们就几个重要的地方写一下就行了啊。上传link的。配置文件哪一个呢?Link-com点亚盟。好了,上传你传呗,啊,又一堆上传器,又去注册的吧,啊,这无所谓了,好了再往下走。
13:10
那这个是做一个测试的啊,这个不用管,再往下走这一块做什么呢。是权限验证的com缩写KRB对吧?啊权限验证相关的好。又过去了。他把这个验证文件也上传上去了,就做这个事啊。啊,你看好长好长啊。好,再往后,再往后。哎呀,总算走出来一点了,对吧。哎,之后呢,是不是把这个咱们之前的配置项给设置进去啊。咱们是不是已经读取到GM脚本manager要多大内存,之前是不是封装了呀?啊,他这边又把它设置一下而已,好吧。
14:03
设置到一个叫job manager process。Ec对吧,是不是特有的。啊,说白了那么多对吧,这一步。这一步。是不是设置am的容器啊啊启动容器啊,对吧,安装容器嘛,这套它就根据这些参数啊,就启动了,上传完就开始启动,启动完呢。这个又是安全相关的啊,Security啊。啊,不用看了吧,对吧,再指定一下容器。它的资源从哪读对吧,好,终于同学们。终于完了对吧?前面那么多你没记住不要紧,一点都不打紧,你知道他干的啥?上传的用户价包,上传了flink的价包,上传的flink的配置对不对。
15:02
完事了吧。啊,完事了啊。到这里终于结束了,这这好几百行是吧。好,前面那些大家可以忘掉啊,无所谓啊,所以我讲的很粗糙,很略过,对吧?就这么大一块,我们看看有多少行。也就300行嘛,对吧,啊,我这边给大家写一下吧,呃,再再写两句话对吧,不然大家一直在看这边。我们说。用来上传什么,呃,用户的架包啊,Flink的依赖啊,还有flink的配置文件啊,对吧,哎呃,就接下来。
16:00
接下来接近300行对吧?啊,不用看啊,不用看啊。直接跳到。对吧。直接跳到close。呃。直接跳到这里就行了,好吧,嗯,那跳我们跳回来啊。哇,还没到。啊,到了到了。好,接下来一个map,用来放am的一些环境信息,大家注意这边啊。这个得写啊。土豆。创建am的。环境信息。
17:01
创建呃,Map用来存储。Am的环境信息对吧,还有什么变量环境变量。和类路径好接下来。你看他对这个做了什么?疯狂的进行put对吧,那接下来是不是应该添加一些环境信息了什么呀?弗林格的。内路径link Dis这个包,我说的这个包是不是flink最核心的包啊,啊好,接下来应用的ID还有呢。客户端加目录对吧。客户端,呃,这这几个就跟咱们上传的那几个包有关嘛,它各有各路径对吧?好。还有什么雅安的文件对吧。还有哈杜用户名,哎,是不是设了一一坨东西啊,对吧,把它设置进去了啊。再往后。
18:01
这个又是基态又是验证相关的,这个验证相关就不用看对吧。设置完之后啊,我们往后看啊。啊,这这里面都是在铺的一些环境啊,一些权限的KRB嘛,KRB5。那这边是把雅安的配置也添加进这个am的map里边啊,就是这个map还在持续的什么,还在持续的添加信息,对吧,我们知道这一点就行了,最终啊。把你设置完了,这个map怎么样设置进容器里面,那容器现在是不是就有了各种各样的信息了,他是不是想怎么执行就怎么执行啊,不是它就可以根据这个环境信息去调用去执行了吧,对吧,咱们就做了这么多啰里吧嗦的工作啊。嗯。将之前封装的。Map。
19:01
哎,设置进容器啊,设置到容器里啊。这个卖板是谁啊,Am的环境信息啊,还有什么内路径啊等等对吧。诶,少了个星啊,少了个星,这边多了一个星啊。啊。这一步,哎,那前面这一块其实也可以粗略的跳过了,对吧,哎,设置完了再往后走,哎呀,还能不能行了,对吧,接下来就是咱们这个上下文还记得吧。应用的上下文现在什么?我之前是不是说了肯定要做一些set对不对,那这边又是一些set操作,Set操作,比如说呀,应用名对吧,咱们起的名字,比如比如说这个是不是一个容器啊。对吧,啊。容器是不是封装了这个env里面又封装了一层一层的,就套娃俄罗斯套娃知道吧,啊,它最终体现是这个东西。
20:07
好,有了这个东西呢,往后看,往后看设置队列对吧?啊这些。是不是根据咱们指定的队列去设置好设置一个。节点的什么标签吧,哎。设置一个tag,又是一个标签嘛,好。好,同学们,呃,罗里吧嗦的逻辑,那么大家觉得这么好,几百大几百行代码,对咱们来讲总结起来应该是什么?是不是跟容器还有容器的环境信息相关的,各种封装,各种上传对不对啊上传完。上来玩干嘛?看这一行。是不是开始提交啊。那这个提交里面是不是submit application。
21:02
题叫什么?提交应用嘛。对吧。那我们这个罗里吧嗦的逻辑后面就是对状态的判断了啊,获取他的状态啊。是running呢还是什么,就就咱们这里的状态这里呢。根据这个状态做不同的事儿啊,打印不同的信息,那后面不用看,也就是说咱们看到哪。是不是这行?我们说。前面做了很多,呃,上传的环境。环境配置啊啊,终于可以怎么样。终于可以提交了,提交应用了啊。所以啊,这个方法里面虽然很长啊,咱们需要记得不多对吧,记得不多,我们要记得其实就这一行核心代码。
22:02
提交应用啊,提交应用。那接下来怎么提交啊,接下来就是属于雅安的源码了,雅安的源码了,呃,我们简单瞅一眼啊不不细看好吧,你看我点进来雅安client它是哪个包下面的哈杜雅安下面它不是flink下面的啊,接下来是属于雅安的源码,那咱们。提交之后应该怎么样?是不是就启动了一个am的容器啊,哎,然后是不是去执行咱们的用户代码,呃呃呃,不不不是用户代码去执行什么。咱们上传那些包是不是那个Dis里面包含了核心组件的代码,对吧,然后在这里面再去体集群嘛,对吧?哎,应该是这么一个过程。那这边呢,你看点进入到雅恩的CTRL加H找实线。
23:07
实线是不是这个。雅安客户端时间内是吧,然后呢,大家注意这个。这个咱不看了,然后他又通过一个resource manager的客户端做了一个提交,之后呢,又就这样子,同学们他是这样的来回应答,呃,最终呢,终于把它提起来了啊,那这块代码咱们就不去看了啊。那所以到目前为止,我们到哪一步了。是不是启动am前的一些准备工作啊,是不是做完了啊?
我来说两句