00:00
起点咱们现在已经找到了,对吧,那接下来呢,我们就通过这个焖啊,咱们开始往下走,那首先大家可以看到我们现在焖方法当中,这是不是拗了一个SPA submit对象出来给了他吧,但是你拗出来以后,好像里面没啥东西吧,对不对,先不管他,然后呢,你拗出来一个对象之后,它里面会有个叫submit点,什么叫do submit,叫执行提交,然后呢,这个as呢,其实就是我们的命令行参数,咱们在之前当中大家看一下,在咱们这边什么杠杠class呀,杠杠master,这个其实都是我们的参数啊,都是我们的参数,它会随着咱们的应用程序,它传递到咱们的这个位置来。那如果它传递过来之后,那这个时候呢,我们就可以把它传到这个方法当中,我们来点一下点,点完以后就走到了这个位置,叫do submit,这就是我们的命令行的参数,然后它里面有个叫做do submit,哎super.do submit,把这个传过去,我们点一下点。
01:05
点完以后就走到了咱们的这个位置啊,这个位置呢,它其中有一个地方叫做pass argument,这个叫解析参数,就是把命令行参数给它解析一下,解析完成以后,后面会有一个叫做哎,什么什么点action,这个叫APP叫application,这叫X叫应用参数的action,叫做动作,它匹配某一个分支啊,如果是sum me怎么办?如果是Q怎么办?诶如果是其他的怎么办?对不对,有这么几个分支,那我们就不知道了,你的这个解析参数,它到底返回的是什么样的一个动作,一个什么样的行为,这个我们需要去分析一下,所以呢,我们点一下叫pass argument,我们点点完以后,它会构建一个叫SPA sum的argument的一个对象,这个咱们先不管它,咱们先往下来放一放,我先把这个咱们拿过来啊,咱们先拿过来,拿过来以后我先放到这里,我用一个蓝色来表。
02:05
是这里呢,我们写上叫Spark,咱们叫submit,它表示的是一个进程啊,就是我们当前它是一个我们的进程,诶就诶我看看啊,咱们这里呢,稍微的给它变一下啊嗯。好,这个呢,咱们去掉啊,去掉去掉以后呢,把它置于我们左边啊,至于左边,嗯,OK好了,我先放到这里啊来咱们继续,那么继续以后它这里面会有一个他们的argument啊,那我这里我再想想啊,咱们这里是不是可以放的稍微大一些呢。哎,放的稍微大一些,这个大的话,这个线有点粗了是吧。嗯,行吧,不管它吧,为了带让大家看的舒服啊,来咱们在这里呢,来咱们大家看啊,把这个东西给他来,咱们放过来,放过来以后在我们刚才的这个位置当中就有一个它叫Spark sumit argument,我把它放过来,嗯,在这里有这么一个对象啊,那这个对象我们之所以给他,诶我们这个是不是太长了呀,太长也无所谓吧,咱们给它拉长一些啊。
03:03
来把这个呢,给它放到下面去好了啊,这个呢,我们先放到这儿,这里用一个颜色给它标识一下啊好了,那我们继续吧,同学们,咱们继续啊,咱们来接着往下,然后呢,我们再往下,往下以后,因为它谬了嘛,谬了以后就会构建它的实力,那么它的类就会初始化,你会发现它里面有大量的一些属性,OK,这些属性咱们先不管它,咱们接着往下,往下以后诶,你会发现在咱们类的主体内容初始化的时候,它会有一个叫pass,叫解析,它会把你的命令行参数呢给它,诶转换一下,解析一下,所以呢,我们再来往下点。点完以后,它会用正则表达式的方式对我们做解析,这个时候就有点变化了,大家看这个地方,这是一个Java程序,这是一个Java程序,Java程序当中它用的是正则表达式,把咱们的命令行参数做一个分解,分解之后拿到咱们的参数名称和那个参数的值,那么找到了名称和值之后,它后面有个叫handle啊,这个叫handle用来做处理的啊,那这个呢,Handle呢,其实应该在我们的这个里面啊,给它挨在这儿啊,就这个地方,他就会把名称和那个值给它传进来,传进来以后他就判断了一下,比方说你的名称,哎,如果你是名称啊,如果你是master,哎哟,这个master好像很熟啊,我们点一下点。
04:32
点完以后就叫杠杠master,所以啊,我回头在咱们的这个地方给大家加一个东西啊,这个呢,我们就叫做什么呢,叫做杠杠master就是它了,记住啊,咱们的杠杠master在这边就能够得到了啊,所以呢,我的这个箭头啊,我的这个箭头给它关联一下吧,啊来嗯。把这个箭头,哎,咱们给它放到这边啊,咱们放到这边用一个虚线,然后呢,箭头,诶不对,箭头,嗯,这样吧。
05:02
咱们给它拿到这儿来是不是行啊,看看啊。看看啊,放到这吧啊,放到这儿来吧,嗯,咱们叫杠杠master啊,就是它了,好啊,这是我们的master,咱们给大家说一下,放到这边啊。来这个咱们统一往这边挪一下,让大家看的比较准确一些啊,这就是我们的一个master,那么我们再来啊,咱们再来就是它的参数很多,你要是把每个都看明白也不太现实啊,所以呢,我们这里有个杠杠master,诶,它就会把你的值呢给这个属性叫做master,就是它,这就是我们那个雅安的集群是吧,后退,后退以后还有个东西,什么东西啊,叫class,这个class是什么呢?我们点它就叫杠杠class,诶咱们这有啊,这不就叫杠杠class吗?所以我们拷贝,拷贝以后拿过来啊,记住同学们,现在咱们的这个地方就会有我们的两个参数,我们碰见了,咱们叫杠杠class,好,那这个杠杠class呢,我们的箭头,诶,它应该关联到咱们的这个位置,对不对,诶,应该是它了。
06:10
好了,这里呢,咱们也用虚线,咱们表示一下,我相信这个应该没问题吧,诶都能明白对不对,好了,行,那这个有了之后,其实我们别的就不用看了,为什么呢?因为它有很多的参数你都可以传,只是你没有传而已,比方说这个地方叫做number execs,咱们老说呀,说我们启动ex,可是你到底有多少个数量呢?那不就可以根据这个参数来设定一下吗?还有什么execor course,就是那个盒数,这些我们都是可以设定的,好吧,同学们,OK,咱们来后退啊,后退,后退,嗯,后推到咱们的这个位置,其实就够了,就意味着我们现在他在解析咱们的参数,那么你解析参数的情况下,我们再去点一下,咱们再去点,点完以后里面会涉及到一个东西叫action。这个action我们找一下看看有没有啊,等会儿咱们搜索一下来,咱们叫action,哎,在这。
07:04
他的刚才的那个地方呢,它会对我们的一个action呢,进行我们的处理啊,这个跑哪去了,在这儿啊,Action可是你是个nu,你是个闹的话,是不可能匹配成功的,对不对,不可能,那所以它一定有个地方给它赋值了吧,所以咱们搜索,搜索以后往下往下往下往下以后,同学们看到了这个位置的时候啊,它就有一个操作,它判断你的action是不是有值,如果没有值的话,它会给一个submit,顾名思义它会把submit传给这个action,所以啊,我们后退后退后退后退到这个位置的时候,大家会发现它的那个action,其实默认情况下就是submit,那这个时候你就可以提交了,所以它就叫submit就开始提交啊,就是这样点,点完以后,那么这个submit当中,他声明了一个方法,但是同学们要记住了。
08:01
我声明一个方法,如果我不去调用的情况下,它应该不会执行吧,所以这个方法先不看,咱们接着往下啊,咱们先不看往下走,往下走是不是走到这儿了,他判断你当前是不是斯丹德隆集群,咱们明显不是嘛,我们讲的不就是雅安集群吗?所以这肯定不是对吧,不管它,然后呢,走一个叫else,咱们叫做do wrong man,你do run man,这个方法不就恰恰是前面那个声明的方法嘛,对不对,然后呢,我们往下看下面这个地方呢,再判断一下命令行参数有没有传一个叫代理用户的,说的简单点就是你服务器的用户啊,这个咱们肯定是没传呢,你没传的情况下,我们这边有个else叫做wrong man。它要runin了啊,运行主程序啊,同学们,它要运行咱们的主程序,所以点点完以后就会走到这个程序当中,它里面有这么一个东西叫prepare submit environment,叫做准备提交的环境啊,这个就很重要了,所以我拷贝一下啊,为了让大家能够把它记住了,所以我在这个地方给他拿过来啊,其实不是为了让大家记住啊,只是告诉你,咱们现在这个方法很重要,咱们后面会提到它,所以你在这样记住了,不是说以后记住啊,以后不用记住,咱们只要了解就可以了啊。
09:24
好,那我现在呢,有一个叫prepare environment,那好咱们接着呢,咱们再往下看啊,往下走,往下走以后大家会发现这边会获取咱们叫做class loader叫类加载器,然后呢,我们通过类加载器呢,它这边有一个叫做什么呢?叫class for name,说的简单点就是根据一个类的名称,然后呢去得到一个类的信息。啊,类的信息对不对,通过一个字符串的类名得到类的信息,其实就是反射嘛,哎,通过反射来得到它,好,那这个main class它干嘛了呢?接着往下,往下以后大家会发现它在这个地方,就问你了,你的这个class啊,有没有去继承它叫Spark application,如果你继承它的话,那么它就会通过构造器去创建实例,并且转换成它。
10:16
那如果你要是没有继承他的情况下,那么就直接拗出来一个Java men OB就可以了,所以啊,它分两种情况,但是你不管哪一种情况,它到了我们的最后的这个位置,都会有一个叫start,叫启动。所以啊,重点就来了呀,同学们,这块我们再说一下,就是我们现在的这个地方,它会通过一个类型信息啊,就是字符串来得到一个类型信息,通过这个类型信息看看它是不是继承了他这个类,如果是他会反射创建这个对象,如果他要不是的情况下会怎么办?诶,他会拗出这么个对象来,他就这么个意思,所以啊,这对于我们来讲,我们很关心的就是这个类型信息它到底是什么,就意味着这个child men class到底哪来的。
11:06
刚才咱们说过了,有一个叫child men class,对不对,它来自于哪?来自于prepare summit environment,所以啊,这个东西我们稍微的说一下,来,咱们写上,嗯,它叫做什么呢?叫做准备啊,它叫做准备我们的提交环境。它叫做准备提交环境的话,这个时候就有一个叫child main class,它就是这个方法返回的,这是一个模式匹配啊,模式匹配返回的结果的第四个值是我想要知道的,所以呢,咱们来,咱们回去把这个咱们点一下啊,咱们点把它点一下啊,不着急啊,同学们咱们点。点进去以后你会发现啊,在我们这个地方就有个叫child main class,你最后返回的就是它,那么中间一定有个地方给它赋值了,对不对?所以啊,咱们往下走,往下走,咱们找到最后的这个地方,呃,什么意思呢?我确认一下,这个是我们当前返回的,就是它是我最终返回的结果,那这个值就尤其重要,那么这个值到底是多少呢?我们回过头来看一看,首先我们搜索一下,往回看,往回看。
12:17
你会发现呢,在咱们这个地方,对这个值,它附上的值,但是不对,因为它这里说了啊,叫is canber cluster,就是我们K8S的集群,那咱们说了不是啊,咱们是集群用的是雅恩的,那这个方法肯定就进不来吧,所以咱们接着再往上找,往上找呢,叫child main class又给它赋值了,但是这说了叫is mys cluster。问你,你当前的集群环境是不是S?那咱们肯定也不是嘛,对不对,所以接着往上,哎,他就问你了,是不是雅的集群环境,那当然了,咱们这不就是恩的基因环境嘛,对不对,所以说它的这个值恰恰就是我们想要的,那这个值是什么呀,我们点点完以后你会发现就是它。
13:09
就是Yan cluster application,哎,就是它,所以拷贝拷贝过来以后记住了,咱们当前咱们的这个东西就是它,嗯。他应该就是我们的ya cluster application就是这个东西啊。
我来说两句