00:00
我继续给大家把这个部署这一部分讲完,上节课呢,大家是已经看到这里边提交了一个任务,而且。它已经在正常运行了,对不对,我们那边输数据,这里边就可以去处理输出结果了,那大家会想到这个任务如果我们不给他手动关闭的话,它是不是就会一直跑在这里啊,对吧?除非出现一些异常,就是我们t manager挂了啊,进程挂了,那那这种它可能就异常退出了,那如果我们不管它的话,它其实一直会放在这里,那假如说这里大家看一下这个overview是不是我们可用的task slot就变成零了呀,这个时候如果我们还想去再提交一个,大家想能提交成功吗?你即使是并行度还是默认的一也提交成功对不对?呃,因为你这里面已经没有足够的看slot了,那所以这里边如果我还想去提交新的任务,这个任务我想把它停掉的话,怎么做呢?
01:00
啊,大家自然就会看到这有点不太明显啊,右上角有有一个这个小小的cancel,如果点这个是不是就相当于把我们这个任务取消掉了啊,所以这个其实还是比较直观的一些,这个控制台的一些操作大家看这里变成cancel这里就没有了,然后complete完成的job里边有一个field,有一个看L的对吧?啊,这是符合我们的预期的啊,然后有同学其实是看了我们刚才的这些操作之后,其实是有一个疑问的,难道说我们提交一个drop就只有用。Web UI的这种点击,呃,一个一个往上传的这种方式去提交吗。作为一个资深程序员,我觉得这种方式有点不爽,为什么呢?呃,我我对,我就觉得我应该打开一个这个大黑屏对吧,然后噼里啪啦敲命令,然后把它直接传上去,这个才有范儿,才有这个资深程序员的范儿啊,当然有同学可能确实是这样想的,那大家就会想我能不能直接用命令行去提交呢?当然可以,对吧,因为大家想这个web UI,它其实给我们是提供了一个什么呀,对界面化的一个可以用rest的方式去做操作的这样的一个接口啊,那如果说它底层去调用的,调用的是什么呢?
02:21
是不是还是胡link里边的那些底层的命令啊,所以这其实是没有什么本质区别的啊,那接下来我们就还是给大家在这个命令行里边去做一个提交啊,那这里如果要去做提交的话,我们调哪个命令呢?肯定是并下边的flink令,Flink命令啊,然后这里边flink要怎么做呢?Flink wrong运行这个时候后面就可以提交啊,我们对应的这一个,呃,就是要跑的这个drop了,那当然了,在跑之前还可以去设一些参数,比如说大家会想我们在这里边去去勾上它去设的时候,是不是这里可以需要去设定它的那个入入口类啊,哎,那这里面是不是也得设,所以入口类怎么设杠C,哎,这样就是设入口内,我们把这个supreme count把它穿进来。
03:21
然后这里面我们不是可以设这个并行度吗?这里可以设吗?哎,当然也可以杠P,这就是设并行度,当然了,这里大家可能知道我这里就不再是了啊,我这里如果给杠T2的话,是不是他到时候就又会create之后半天转圈就就是拿不到足够的资源啊,对吧?啊,所以这里面我们就呃,或者我这里给大家改一个配置吧,大家想我这里可以去怎么改呢?我是不是可以把那个插槽数改一下,这里可能就可以能拿到更多的资源了,对吧?哎,所以这里我可以干一件事情啊,那么会想到我如果改那个默认配置里边的插槽数的话,就是现在改了之后,它即时就能生效吗?对,这是不是我们相当于集群就得重启了呀?啊所以我们就顺带给大家讲一下这个集群,集群怎么重启呢?那有开就有关,当然是并下边的对stop cluster就可以把这个集群关掉,对吧?啊。
04:25
我们先把它关闭,同样大家看这个关闭的过程当中,它也要把这两个进程都关掉,对吧?啊,这里边GPS一下没了,我们接下来去改一下config下边的flink con ya这个文件,我们要改哪个东西呢?是不是就是这个上下两个改哪个对,我们要改的是默认的slot数量对不对?比方说这里我给一个三可不可以。那可以的啊,大家看一下这个给了三之后的状态是什么,重新起一下并start cluster。
05:10
提起来,呃,这个提起来之后,大家其实会想到这里边其实我们就啊,这里边我是不是得重新提交了呀,如果我在这一个页面上去提交的话啊,接下来好在我们不用去那个页面上提交了啊,我们直接命令行提交,大家看一眼。诶,大家看当前是不是task manager是1TASK slot就变成了三对,因为我们指定它里边默认是不是有三个插槽啊,所以这里变成了三,然后当前没有提交状是不是可用的有三个啊好,接下来我们在命令行里边去做一个提交并。Link不说杠C,然后杠P并行度是二对吧?呃,然后接下来还可以做什么事情呢。
06:02
好,接下来我们可以这个。大家知道肯定要指定我们对应的那个抓包得提交上去,对不对啊,你当时在这里边的话,我们是upload上传上去了,那这里边不做上传的话,我是不是得指定那个文件啊,所以这里边我的文件目录是在project下边啊。Link target下边,呃,那个我们叫什么呢。后面好像还有对吧?Draw with dependenceies是不是就是这个东西,只要找到把它上传就OK了,那这个已经完事了吗?还有别的是不是还有别的得配啊,对,大家还记得是不是还得加上参数啊,参数很简单,就在后面跟吗?杠杠host local host杠杠7777好。诶,直接把它提交starting execution of program,然后在这里边我们可以在running jobs。
07:04
大家看,这里面running已经有一个了,对吧?Running jobs这里也有了,大家看现在是不是已经有一个running状态的job啦,然后我们再看啊,哎,这里面这个状态就不一样了,大家看。他的,呃,这个状态其实就是我们一开始提交的那个并行度是二的时候的那个状态,对不对,跟我们前面并行度是一的时候就不一样了,然后大家看他下面细分的任务是不是就分了四个啊,对吧?呃,前面这个socket source,这里面是并行度是一,这是一个任务,然后这里边并行度是二的是Fla map filter map合成一个任务,后面的aggregation又是一个任务,最后的print输出这个S又是一个任。啊,它分成了这样的四个子任务啊呃,然后这里边大家可能会想到就是那那如果说这里边我们要输入东西的时候到哪里去看呢?那是不是相当于还是要到task manager的标准输出这里来看啊啊,我们来测一下这里边它到底。
08:08
靠不靠谱啊,Hello world,我们看一眼它是不是有一个正常的输出呢?诶大家看果然正常输出了,是不是完全没问题啊,而且当前它的这个运行的过程,最后输出它是只有一个并行度对吧,只有一个线程输出的,但前面在做操作的时候,是不是中间是并行的两个任务都在做啊,对吧,跟我们之前那个就不一样了。呃,那我们还是看一下overview这里。我们运行提交了这样一个任务之后,它这里边有一个状态就会变成什么呢?大家看available可用的tasklo就变成了一对,它占用了几个对占用了两个,哎,这就是我们这样的一个状态,大家通过这个也是一目了然,可以看到,为什么在这里边主要就是用这个stand alone这个模式给大家做讲解呢?就因为他有这个自带的UI嘛,所以他看这个就是很多东西都一目了然啊,这个是非常适合大家学习的一个工具。
09:14
呃,那大家自然会想到,我既然可以这个提交,那可不可以把它这个取消呢,Cancel呢?啊,当然可以,对不对啊,既然能提就能取消嘛。大家想一下怎么样取消?有呃,有同学可能想到,那这个简单吧,我是不是直接把它这个CTRLC这个直接退了,这个就就完事了呀,我们我们来这儿看一眼啊,Running drop是不是还在这儿啊,Complete是不是没有啊,它取消了吗?相当于是不是还没取消啊,还在运行对不对?哎,那这个东西到底要怎么取消呢?啊,当然我们可以点这个右上角的这个这个cancel,对吧,我们现在就是就是觉得他不爽,我们是资深程序员,那怎么样啊,有的同学是说kill啊,直接去杀进程,那那当然这里边你如果要杀进程,杀掉这个他ven runner的话,当然是可以的,但是后面相当于你再提交,是不是也提交不成了呀,对吧,相当于你把集群的那个runner给给干掉了,因为这里并不是针对我们这个当前drop而言的,那这个drop怎么样去cancel呢?这里边我们要用另外一个命令,首先我们要去大家看这个flink不是可以run吗?那flink还可以list。
10:34
List是什么呢?对,就是列出我们当前所有的正在运行的状啊,那当然了,这里面大家看到这个是正在运行的对吧?啊,所以我这里边如果想把它停止掉的话,诶,我就直接flink啊,不是stop,直接就叫cancel,当然了,后边是不是还得加上到底要让谁cancel啊,所以我要加上一个他的ID啊,大家看到前面这一串数字了吗?
11:08
诶,我们把这个复制过来。这右键好像不太好使啊。好。大家看到现在他就真正的把这个状取消掉了,对吧,取消掉之后现在再list的时候发现是不是。是不是没了对吧?啊,那当然了,如果这里边你感兴趣的话,在这儿一点是不是这儿也没了呀,它会出现在哪里,是不是会出现在complete的jobs里边啊,那有同学可能还会想,那这里边你这个list的难道就看不到已经取消掉的吗?啊,其实也能你可以什么啊哦,对吧?啊,直接看所有的这个job,那大家看是不是它这个已经cancel掉的也可以看到了,所以大家看是不是我们在这个web UI这个界面上能做的所有事情应该在这里面都能做啊啊P脑里面都能做啊,所以这个大家就是了解一下,把我们这个东西知道它是怎么回事就可以了。
12:16
呃,当然了,就是我们最后如果要是说这个集群已经不需要再运行的话,那还是就是把它正常stop掉对不对,Stop cluster直接把它停掉就可以了。呃,所以整个的这个过程其实还是比较简单的,大家应该也没什么问题吧,然后接下来还有一些内容是大家看到我们已经讲过的是stand alone的提交模式,那还有别的提交模式呢?我在这里就不给大家具体去操作了,但是给大家过一下,比方说啊第二部分大家会看到我们可以用雅恩模式,对吧?可以在雅恩上去提交我们的这个状,那这个过程又是怎么样去做呢?呃,雅恩里边其实是支持这个,呃,就是我们这个雅安session的这种提交,也支持就是单一一个drop的这种提交的,一般情况呢,我们一般都是用这个雅安session的方式去提交,对吧?要不然的话,你这个提交一个完了之后就就直接都都已经关闭了,这肯定是不合适的,所以这里面大家看,我们给大家介绍的这种方式,就是亚session。
13:29
呃,大家看这个雅恩模式跟STEM模式一个显著的不同是用雅恩模式部署flink任务的时候,必须要求flink是支对有哈dobe支持的版本啊,那那大家可能会看到前边我这个3O模式下边,我这个本地环境里边,其实就是一个没有他都不支持的版本,对吧?啊,直接跑也是没问题的,当然你要用他都不支持的也可以,对吧?啊,这个都没有什么影响,但是雅安这里就必须有好多支持,因为大家知道为什么呀。
14:04
对,因为雅安那里我们是不是要用到HTFS相关的一些服务啊,对吧,所以这里边就一定要有海多支持,而且呃,它有要求啊,必须版本在2.2以上,而且要有HGFS的服务啊,那整个过程就是首先我们把那个海多不集群先提起来。大家很熟悉了,我们就不详细说了,然后接下来的部分是启动一个雅安session,大家还记得我们在那个并目录下面有一个雅安session吗?那命令吗?对吧?这里就是启动雅session,它启动的时候就可以有很多配置项,比如什么呢?哎,大家看杠N,杠N就是什么?或者杠杠container,对,这就是我们task manager的数量。后面还有杠S,杠S是什么?对,是不是就是我们那个slots默认的那个数量啊对吧?然后后面还有杠GM,那这是什么呢?这是drop manager我们配置的那个啊对应大小,那个内存的大小对不对啊,1024兆对吧?啊然后杠TM是不是就是task manager的那个对大小啊呃,大家看这是不是就是我们三德乐模式下边集群启动的时候默认配置里边的那些东西在这儿都得配置好啊啊其实就是这些东西啊啊当然后面还可以给这个雅安的APP name,然后后面可以加上杠D后台执行给大家了解一下就可以,然后启动了雅安session之后,就可以用这个雅安session去提交状了啊大家看接下来提交提交状的时候是什么呢?还是一样,就是点Li wrong,只不过后边要加上一个什么呢?
15:45
加上一个杠M雅安caster,就是要指定我们之前定义好的,就是这个要要用雅恩模式去启动,对不对,对吧,要用雅恩模式去启动,后边呢,要传的这个入口类,还有我们的这个jar包以及一些参数都一样,照着这个去传就可以了,大家看我们这里文档中的示例,这个参数传的是什么呢?是不是传的是啊,有点像我们批处理的时候的那个输入输出的那个文件的路径,对吧?把这个作为参数传进去了,大家也可以尝试这个写这个代码,呃,这个提交完就可以了,之后我们就可以到雅恩的控制台,呃,去看这个对应的那个任务状态了,当然这里面也有一个不好的地方是什么呢?
16:31
它的好处在于,呃,在这个资源分配啊,整个这个过程当中,我们就不用再去操心了,就雅安全帮我们搞定了,对吧?但是不好的一点就是大家看这个具体的任务状态和任务里边数据的那个,包括我们的那个任务计划啊,对吧?还有数据的那个状态是不是在这里就不是特别直观啊,不如我们那个web UI看起来那么那么直观啊,所以这个大家可以在学习的过程当中,主要用这个stand alone模式去起啊,那在真正生产在应用环境里边,更多的可能还是要用雅安对吧,或者后面。
17:07
要给大家讲第三部分就是K8S啊,那大家知道K8S这是一种容器化的部署技术啊,现在其实是非常流行了啊,它主要就是基于docker镜像,就是docker是一个什么样的东西呢?它可以把一个,呃,我们某种应用或者某个服务把它直接包装在一个镜像里边,然后启动在一个,以一个容器化的方式把它启动起来啊,所以这种方式的话,呃,在我们现在在构建微服务的过程当中,就特别的特别的好用,在某些方面的那个行为有点像什么呢?有点像大家起一个虚机的那种感觉,但是它比虚机要轻量级的多得多,而且它并不需要是一个完整的一个一个节点,一个机器,对吧,有操作系统这样的一个东西,它可以就是简简单单一个服务,然后它放在一个容器里面,直接提起来就可以了啊,所以这个就是现在在这个部署的运维。
18:08
的这个领域啊,是非仇非常流行的技术,那现在这个flink呢,在比较近的版本里边,就是1.7以上肯定是支持的啊,就都支持了这个,呃,K8S的部署,那它这个部署过程呢,其实也很简单,就首先你要把这个K8S级群要打起来,然后接下来呢,它其实就是配置各个组件的压模文件,呃,那大家可能知道就是我们这里边需要的组件是什么呢?它这里边主要需要的就是撞manager和task manager。呃,因为大家知道我们在整个这个link集群,集群运行的过程当中,主要就就看这俩对吧?呃,这里边呢,每一个组件KS上面部署的时候,就要对应着一个镜像,一个docker镜像,它其实就是要把对应的那个docker镜像一个一个都提起来,然后就完事了。
19:01
呃,那对应的就每一个都有一个压ma文件配置对吧?啊,那这里面它除了draw manager task manager的镜像之外,还得起一个叫draw manager service的镜像啊,所以大家就会看到它不仅仅是大家感觉像虚机的那种感觉,对吧?它随便的一个服务也可以起一个镜像啊,这些东西我们都可以获取到啊,就然后把这个配置文件配置好,接下来它启动的时候非常简单,就是K8S的那个命令,呃,工具啊,然后直接create一个杠F,然后manager service ya某,然后照manager deployment ya某,Task manager deploy。压盟把这三个服务都提起来就完事了啊,然后之后也是就直接可以通过这个job manager services里边可以配置web UI,直接可以看到它的那些页面啊,这个就大大大家大概有一个了解啊,有一个印象就可以了。
我来说两句