00:00
我们之前已经写好了程序,接下来就准备把它部署到我们的集群环境里边了啊,大家知道真正在实际生产应用当中,显然你不能在在idea里面去跑这个应用对不对啊,肯定要把它打包,然后提交到我们的集群环境里面啊,所以接下来给大家讲一讲flink的部署,Flink部署这一部分呢,大家就会看到啊,Flink里边有提供了不同的部署模式,不同不同的部署的方式。最简单的部署方式,哎,大家看它提供了什么呢?Stand alone模式,对,我们可以直接用这种方式去起一个flink集群,另外flink还提供了各种各样不同的资源管理平台对应的一些部署方式,比如说啊雅恩对吧,这个大家也很熟悉,比如说还有什么K8S,对这些link都是都是支持的啊,啊所以这种部署方式呢,我们在这里就以这个stand loan模式给大家作为一个例子做一个讲解,那至于这个雅安模式和K8S呢,大家可以作为这个作业下去之后,感兴趣的话大家都跑一跑。
01:12
呃,这里面要跟大家说一下,就是我们既然要去部署这个flink的程,呃程序啊,我们要创建这个flink的集群,首先当然是得下载flink的安装包,对不对啊下下载这个flink这里边文档里边给大家举的例子呢,我这里边下载的是什么版本,大家看到1.7.2对吧,这是跟我们这个呃在在这个idea里边用到的这个版本是一样的,1.7.2,然后后边ban,然后大家看到这里是哈杜二七,然后skyla2.11。这代表什么意思呢?这代表它是一个有哈杜支持的一个版本。那同样大家就会想到这里既然有有哈杜支持的版本,那就还会有啊,对,就不支持哈杜的版本,也就是哈杜op free的版本,这里边如果大家是做这个sta lo模式的这个处理的话,那大家会想这个哈杜op是必要的吗?啊,其实不是必要的,对不对啊,所以这里边我的这个环境里边呢,直接就安装了一个哈op free的版本,比方说这里边啊。
02:27
我在这个兔子下边。有一个这个flink,大家可以看到我这里边下载的这个flink的版本是什么呢?是这个啊flink1.7.2并skyla2.11TJC对吧,这个压缩包啊,大家看到这是不是就没有哈杜和二七那个那个标志啊啊对吧?所以这是有两种这个不同的版本,大家可以到官网上去去下载啊,这个大家应该知道,我们这里边downloads对吧?呃,直接就可以点进去看,大家看这个呃,1.7.2 1.8.2,现在最新已经有了1.9,呃,这里边我们就选取,比方说这里边可以要这个有哈多支持的版本,对吧?啊另外你也可以要这个直接没有哈杜支持版本,这里边想要那个版本去对应的下就可以了。
03:19
然后大家如果下载之后,首先第一步是不是就要把这个压缩包先先解出来啊,对吧,解完了之后就会有一个flink啊,大家看这里边1.7.2这样一个目录进来之后呢。这里边下面的一些目录,其实我们大家一目了然,一看就知道它到底是干什么的,比方说这里大家能看到啊,这个是什么执B,哎,对,那就相当于很多命令的那些个执行命令对吧?啊,执行命令的目录,然后cof com呢,Con对吧,配置目录啊,那后面的这个examples呢,是一些事例,对不对啊,Lab是一些库的支持对吧?License是跟我们的这个license相关的一些东西,还有law相关,这些都比较简单,我们最关心的。
04:11
其实就两个目录,哪两个目录呢?对,是不是就是一个并目录下面有我们所要执行的所有的命令,另外还有一个对吧,里边有我们需要去处理的一些配置文件,这里我们就简单的给大家看一眼啊,首先看一下并目录下边大概有什么东西呢?啊,这个大家已经看到了,比方说这里边有这个flink console的一个一个这个命令对不对?诶大家看到最直观的一个命令,它是什么呢?是不是直接就叫flink啊,所以后面大家可能会发现,呃,我们如果要用命令行去做一些操作的时候,它其实大部分就直接执行这个flink就可以了,除了这个之外,还有哪些比较常见的命令呢?哎,这个也比较常见,大家看到对我要start cluster起一个flink集群对不对啊,直接把一个集群起起来,那另外有有start就有stop,对,所以这里边还有这个stop的这个过程,另外还有什么呢。
05:15
啊,大家看到是不是还有雅安session啊,如果我们想要用这个雅安模式去提交job的话,当然一开始我们用这个session模式啊,啊,就可以先去创建一个雅session,这里也是基本的命令都在这里放着,这是并目录下面,然后另外还有一个目录是conig目录啊,大家看一下config下面有什么。这里面当然就是一堆配置文件,这里边最重要的配置文件是什么呢?其实就是第一个大家看,就是一个叫做flink con.yamo的一个配置文件,呃,Yamo这种配置文件大家也见过对吧?啊,这是也是比较常见的一种配置文件格式,呃,这里边其实就配置了我们的link集群里边设定好的很多基本的一些参数,一些配置参数,那这里面到底有什么呢?我们来看一看吧。
06:13
诶,大家看到啊,这里边其实我们能够看到最重要的其实就就这么几项啊,就这么几个,下面大部分都是都是被蛀掉了,对不对,来看看下面大部分都蛀掉了啊,所以呃,蓝色的被蛀掉的那部分大家即使看不清也不是特别重要啊,我们就先先空过去,当这部分应该看得清楚对不对?哎,我们看一下这是什么呢?Job manager rpc.address这是什么东西呢?哎,对,当然当然大家看到这肯定是一个RPC的一个通信地址,对不对?这首先address这里边给的是一个IP,或者说一个host name,然后紧接着下面是不是就有port呀,端口,对,大家看看默认的这个内部RPC通信的端口是多少?对,6123,当然这个就是说你如果想改的话,也可以去自定义,默认就是6123,那前面这个drop manager又是个什么东西呢?
07:12
哎,这里边就涉及到了我们在这个flink运行时的各个不同的组件,最重要的组件有两个,一个叫做job manager,另外一个叫做对,大家看到下面有啊,叫做task manager,那从字面意义上来讲,大家想这两个分别代表什么意思呢?啊,Job manager其实就相当于是job manager吧,对吧?作业管理者啊,那那当然他就是管理我们整个drop的,他主要干的事就是做管理调度这方面的一些工作,对不对啊,那他如果是做管理调度的话,那具体干活又应该是谁来干活呢?对,就是task manager具体的任务的那个管理者啊,那这个其实只是名义上好听一点叫他叫manager了,那事实上他其实就是最终干活那个人对不对?所以有时候也直接就把它叫worker,对,所以大家有时候在这个flink里边见到这个worker的概念,它其实说的就是task manager啊,啊另外大家其实也可以跟Spark里边我们提到那些概念去做一个对比,对吧?啊,这里边的这个worker或者manager就相当于Spark里边的什么呀。
08:31
是不是就相当于是我们的那个ex啊。对,大家可以对照啊,那同样这个manager相当于什么呢?对,这个其实就相当于我们之前的这个driver啊,大家可以简单的做个类比,当然他们具体的一些功能是不一样的啊,但是我们如果从这个一个是管理者对吧,整个作业的管理者,调度者,另外一个是具体干活的人,从这个角度来讲,可以做简单的这样的一个对照啊。
09:04
好,那然后接下来大家看还要配什么呢?配drop manager he size,这是对应大小,对我们整个这个job manager它这个啊,内存的设置啊,对大小到底有多少,我们这里面默认是一个G,对,然后还有task manager heph size啊task manager是不是也要配置一个对大小啊,啊这里边同样的啊,他们都要配置个也是一个G,后边这两个比较有意思,给大家看一眼,这个叫什么呢?Task manager.number of task slots,诶这个就提到了,前面我们给大家讲到不是有一个那个我们说那个什么线程,或者说并发并行度的那个概念吗?给大家提了一句叫slot,就是说我们说每一个线程其实是跑在一个slot里边的,对吧?啊,这里这个slot其实就是我们整个flink集群里边做资源管理,资源调度的一个最小。
10:05
的单位对吧,它能获取到的一个资源就是一个slot,然后呢,我们的每一个任务它并并行执行的时候,每一个它细分的这个并行子任务就是一个线程,这个线程就会分配到一个单独的slot里边去执行啊,这是这个slot这样的一个概念啊,后面我们会给大家详细再再给大家展开去说这些概念,那这里边这个number of task slots又是什么意思呢?啊,大家其实就会想到了,我们不是说这个task manager是干活的人吗?那这个干活的人他到底有多强的干活能力呢?对吧,他的劳动力到底有多少呢?这是我们在这里边去给他分配好的。就是说你到底有几个槽,几个插槽对吧,那是不是有几个插槽,它就最多能并行的执行几个任务啊,哎,这个是大家能够想到的一个概念,然后下面大家看又有一个配置项叫做parallelism.default。
11:13
诶,这个我们说过这个parallelism概念是并行度对吧?我们前面在程序里面不是也set过它吗?这个叫并行度,诶,那前面那个slot不是也是控制它并行度的吗?那怎么下面又来了一个默认default对吧?默认的并行度呢?这俩是什么关系呢?哦,这里边先给大家提一句。对,这里边大家其实直观也已经能够想到了上面的这个slot的数量,这是不是相当于它的一个能力的表现啊,对吧,你可以运行几个,而这个paraism default,这是什么?对,实际运行的时候到底是并行度是几啊,所以这个大家其实直观就已经能够有这个区分了,这里边默认呢,它就都是一啊,所以这里边我们先不改啊,大家看看这个状态到底是怎么样,后边还有一个一项是直接放开的,这是什么呀?
12:12
rest.port那大家会想到这其实是什么呢?是我们启动这个集群之后,就会给我们提供一个啊,就是开放的一个rest接口,对吧?我们可以直接通过一个web UI去访问整个这个集群状态,那这个端口是什么?哎,默认开放的是8081端口啊,大家想改可以去自定义去改啊,这就是我们这个配置文件里边的一些内容啊,当然还有很多很更加细化复杂的一些内容,默认的时候都是没有放开的,都是助教。接下来。呃,除了这个配置文件,还有什么配置文件,呃,值得关注一下呢,大家会看到,对,在这里边有一些这个log for g,这个大家一看就知道这是干嘛的,对,这是管理我们日志的那个状态的,对吧,这个log for g嘛,所以这里边大家如果想看的话,也可以看一下这个。
13:12
一般是不是我们在这个log for g.properties里边就会定义好它这个输出日志的级别啊,啊,所以大家可以看到这里边我们就是所有的infer是不是都完整都要输出啊,这边它用的组件有这个阿卡卡夫卡哈,Do keeper对吧?所有的都是infer级别,大家如果觉得那个日式lo有点有点太烦的话,你也可以把它这个调成这个wall或者是error对吧?啊,那另外我们更加注意下关心的是什么?对,大家已经已经注意到了啊,跟集群相关的是不是有一个masters,有一个s slaves啊,字面上理解这个master应该是什么?对,Master这里配置的其实就是我们的。大家可以看一眼啊,其实就是我们当前的job manager的那个地址对不对,然后后面还要跟上我们前面定义好的那个啊,对那个web UI的那个端口号,开放的那个rest提交的那个那个端口号8081啊,这是这个masters里边配置,那大家会想到s slaves又是什么呢?
14:23
对,Slave slaves就是我们这个集群的干活的那些节点,因为大家知道slave相当于有那个奴隶的意思,奴仆的意思,对吧?啊,所以我们这里边master不是主人嘛,他是管理者,那slave奴隶当然就是干活的人了,他其实配置的就是。Task manager,呃,大家看这里边我默认的时候只有本地,是不是就只有自己啊,对吧,只有一个local host,那大家可能有想到,我平常这个drop manager和manager是不是可以配到不同的机器上啊啊,当然你如果要drop manager同时也作为一个task manager也是可以的,或者你要是机器比较多的话,你也可以把它完全分离开啊,这个都是可以做到的啊。呃,那大家自然就会想到,假如我要是有更多的节点的话,我这里给大家做示范啊,做一个DEMO,我这里边直接就用本机,就直接就是本机既是一个drop manager,也是一个task manager,对吧?啊,所以就相当于是只有一个干活的节点,那家想正常我们配置的时候,Join manager应该是几个整个作业的这个管理者,对,就是一个啊,除非你去配置高可用的时候,可能会配置一些备用的一些装备,对吧,但真正干活的还是一个。
15:43
那我们的task manager呢,干活的节点呢?对,它其实是一个或多个对吧,而且往往一般我们真实应用场景里边往往是很多个,对不对啊,一般不可能只配一个,那如果要是很多个怎么配呢?啊,其实很简单,大家看一下我们这里边给大家这个例子,是不是我可以直接把这个,呃,大家大家看啊,就是说我是不是直接把这个slaves里边把我对应的,比方说大家之前已经搭过这个哈多的集群,对不对,已经有集群环境了,比方说我那个叫哈杜普二哈洞三的话,我直接把这个名字写进来是不就可以了,直接可以访问到了。
16:23
那当然了,就是说如果我们有多台这个s slave的话,他manager的话,那是不是得把link也得分发到其他机器上啊,要不然他起这个集群他执行的时候,他他拿什么去执行呢?他根本没有相关的代码啊,所以这个还是要发发过去,这个大家应该也比较熟悉了,然后接下来就很简单了。接下来大家看到怎么做呢,直接执行。对,Start cluster。那是不是就相当于把整个那个集群启动了啊,这个其实就非常简单啊,我这里边就给大家做一下操作。
17:01
病里边的start cluster。啊,大家可以看到这里边它会起一个什么呀?起一个stand alone session对不对啊,它是on我当前的这个,这是我当前的主机名啊,然后另外它还会起一个task executor对不对,Executor对吧?所以就相当于是什么呢,既要起一个。撞manager这样的一个一个一个session进程,对吧,另外还要起一个干活的task manager的一个进程,呃,大家这里如果去GPS看一眼的话,其实能看到啊,就是有这样的两个啊,一个stand session,一个past manager对吧,这两个就都提起来了,然后接下来其实我们就可以直在我们当时说他不是会起一个web UI嘛,所以我在这里就可以直接访问local host啊,那当然大家不知道local host直接访问它的端口8081对。
18:19
啊,大家看到这就是flink给我们自带的stand lo模式下边的一个web UI,一个控制台。大家可以看到,在这里边我们直观的可以看到当前集群是一个什么状态呢。哎,大家看是不是就相当于只有一个task manager对吧,然后呢,我们当时是不是里面默认就只有一个slot呀?啊,所以他看到诶总共的slot只有一个,然后呢,可用的也是一个,因为我是不是根本没有任务去把它占用了,所以现在可用的也是一个,哎,这就是我们当前整个的一个状态。然后在这个里边,我们还可以去看哪些东西呢?这里我们还可以直观的看到当前的这个状。
19:05
它的状态正在运行的有哪些,已经完成运行的有哪些,还有呢,取消掉的有哪些,失败掉的有哪些,对吧?啊,这里边是一个总数的一个统计,具体我们是不是可以在这里去看啊,来看这里边有啊,分别去点啊,啊另外大家看到还有什么。Task manager它这个状态在这里面都有了,对不对啊,大家看它的这个集群管理是用这个阿卡去去管理的啊,然后这里边它本身的这个data pot是55806,呃,然后这里边还有一些这个心跳对吧?它在不同的跟draw manager互相之间是不是要有心跳包啊啊,所以这里边在不同的检测这个心跳状态,然后这里边大家看我当前的这个test member什么样的状态呢?啊,这个CPU4核对不对,然后这个memory内存啊,这是我这8G的内存,它这里面可用的7.7个G对吧?这里边设置的GM那个堆大小。
20:03
当时1024对吧,这里边是922兆啊呃,当然了,这里边大家可以看到这个flink管理起来的memory有641对不对啊,这是我们当前这个task manager的状态,当然同样我也可以看到这个撞manager状态,对吧?啊,这是这些内容,然后大家在这个logs里边是不是就可以看到我们当时这个启动的那些信息啊,我们的那个对日志信息log forg所有的info是不是都输出了啊,所以大家看到这个日志信息还是很详细的啊,感兴趣的同学可以在这里边看到我们具体的这个启动信息。
我来说两句