00:00
那给大家讲的呢,都是三模式,大家也知道在实际生产环境里边,我们其实是不可能只是简单的起一个flink的STEM集群,然后就去提交job,刚才大家也看到问题了,问题在哪里呢?对,是不是就是假如说我们资源不够的话,一开始分配的资源不够的话,那接下来是不是他那边就一直在那等着绕圈圈啊,就一定得是我们看到他现在诶状态不对,这个资源不够,然后我要手动去停一些之前已经占用的那些资源,然后才能把接下来这个想要运行的这个任务跑起来,对吧?啊,这个过程其实就非常的繁琐,我们在实际运行这个drop的过程当中,往往是什么呢?我不希望这些任务都都让我来做,我们当前应该是整个有一个非常大的。资源的平台,然后我当前应该就是需要用多少资源,我朝他去,朝他那去要就可以了,对吧,就像我们说这个,呃,就像这个云服务啊,就像我们说这个自来水一样,我要水的时候一拧开直接就可以流出来,不就完了吗?
01:03
那你不要说是这个不停的,我我这儿这这儿一拧开之后没水,因为别人那边用了水了,我这边就没水了,我还得去跟别人沟通,这就太麻烦了啊,所以在实际生产环境里边,往往我们都是把flink要部署在啊,就是一些资源管理平台上,也就是对于这个资源的调配和管理呢,把这个管理权限直接把它上提到资源,或者说下放,下沉到资源管理平台这一步操作里面来,Flink本身就不用关心这些了,我只要需要资源的时候朝他要就完事了。那最常见的资源管理平台呢,就是雅恩和K8S啊,所以大家也需要了解一下,在雅安和K8S上到底怎么样去提交作业,提交drop。呃,那首先我们给大家说一下雅恩模式啊,呃,雅恩模式,用这个雅恩模式去提交droplink drop的时候必须要求我们当前的这个flink呢,是一个有哈杜普支持的版本,对吧?相关的依赖你得打进去啊,那之前我们说在1.7flink依点七之前,它的那个发布的安装版本啊,里边就带着对应的那个哈支持,那我们可以直接下,而现在呢,是他们是分离开的,所以大家要单独下载,然后把那个支持的那个抓包扔到。
02:24
Flink安装目录的那个I lib Li下边对吧?啊,那个库下边去,所以这是一个前提条件啊,啊所以大家下来试验的时候,首先不要忘记这一点。然后接下来呢,在雅恩模式里边,弗林克昂雅恩昂雅恩啊,有又有两种不同的运行模式,又要分开,这两种模式,一种叫做session cluster session集群绘画集群模式,另外一种叫pro job cluster,也就是单一的作业模集群模式。那从字面上理解的话,都是要创建一个flink集群对吧?啊,就是这个集群的构成的方式有所不同,那首先我们来看这个所谓的往往我们简称就把它叫做一个叫做session模式,一个叫做job模式,对吧?啊,一个是绘画模式啊,一个是这个单一的作业模式,那这个session模式呢,大家看这个图,他提交的时候就相当于什么呢。
03:21
我在当前的雅恩集群上面先去创建一个雅恩session。先创建一个绘画,然后接下来我创建这个flink集群的时候,就是基于这个当前的这个绘画创建了一个flink的集群。所以接下来我要提交对应的那个job的时候呢。都是在这个绘画里面提交,所以是不是这所有接下来提交的job都是共用了这个一个集群啊,啊,所以大家看其实这个雅安session模式啊,它是有点像我们前面讲的这个三模式的,大家感觉是不是有点像。
04:00
它其实就是预先在这个雅安里边,相当于我先起一个绘画,然后我就划定这些资源,对吧,来当前去运行,然后呢,接下来我提交的这些job都在这个会画内,所以整个我们这个模式就是说先启动一个集群,在会画里面先启动一个集群,然后再提交作业。那大家看一下,就是当前我们这个,呃,这个资源的分配又是什么样子呢?简单来讲就是说。一个job来了之后,我就分配当前这个集群里边的资源给他,如果说下一个job来了之后,当前集群集群这个session啊,绘画这里边的这个资源已经耗尽的话,那我这里边就啊就不能直接执行了,对吧,就得等待,等待前面的其他的一些drop运行完毕,释放资源,然后才能继续运行。所以大家发现这个就看起来跟那个三作模式有点像是吧?啊,整个过程其实有点接近的啊,所以它比较适合是什么样的状态呢?啊,就是当前是所有作业啊,Job是共享这个对应的这个resource manager和dispat的,这是我们运行架构里面的两个组件啊,它的那个资源管理器,资源管理者是共用的,然后所有的资源都是共享的,它比较适合就是每一个作业都比较规模比较小,而且执行时间比较短,有限时间可以执行完的这些任务。
05:29
大家就想到我给他画一片资源出来,是不是我执行一个就就关闭一个,执行一个关闭一个资源就释放了啊,接下来新的那个job就可以继续运行了啊,所以这个就比较合适啊,用这种方式就比较合适。然后接下来还有另外一种模式,就是所谓的drop模式pro drop的话,这个大家看啊,这个就比较强有力了,他所说的这个cluster这个集群是针对每一个job,每一个作业都会创建一个。所以接下来就相当于是我提交一个drop,提交一个作业,就去对应着创建一个雅弗link,在雅安上的cluster,每提交一个作业就就对应一个,那他的内部资源是不是就完全独享啊,对吧?啊,所以就是不同的这个作业job啊,你提交的时候根本就没关系,只要雅恩那边有资源,我这边随便占对吧,就是我因为我是单独给他创建的这个集群嘛,那当然对应的那个资源都要给他分配到,只要雅那边没满,我这里边就永远能够跑起来。
06:30
所以它比较适合就是规模比较大,而且长时间占用我们的这个资源,一直不释放的这种作业,对吧?哎,你就用这个draw模式去执行就可以了,实际的工作当中呢,就是session审模式和draw模式确实是都有的,就是看我们就是说看你的这个需求到底是什么样的场景,对吧,你按照这个划分就可以了。那这里再具体的讲一下,就是启动的过程啊,大家看一下就是我们具体操作怎么操作,首先你启动之前得有好多集群,这个就不用说了,大家应该都是配置线程的啊啊配好哈杜普,然后接下来呢,Session模式下是先要启动一个雅n session,大家看启动雅安session的时候就用到了。
07:15
雅session这个命令,这个命令在哪里?对并下边还记得吧,有一个雅n session.sh然后后边的参数大家需要注意一下啊,这里是杠N。二这个杠N指的是什么呢?杠杠contain,它指的就是当前session里边task manager的数量。对吧,到底分配多少个,然后杠S呢。Slot的数量对吧?每个task manager分配几个task slot,然后后边就是杠GM1024,这是job manager的对应内存大小,TM1024,这指的是。Task manager对应的那个内存大小对吧,整个进程的内存大小,另外还有一个NMNM,这个其实就跟flink没关系了,这是对当前那个雅安上面APP name的那个,呃,指定的那个name对吧?另外还有一个杠D,这个是detach的模式对吧?分离模式啊,所以这些指定之后大家就看到,那其实我们整个这个集群,这不就是我们在那个集群雅安的那个压木文件啊,配置文件里边核心要配置的那几项吗?
08:23
所以它其实就是在这儿把我们那个集群定义出来的,这就是session模式的一个启动方式啊呃,那其实现在还要给大家多说一句的是,现在的版本里边这个杠N。应该已经没有什么用了,就是你你也可以加上这个参数啊,它不会报错,但是说它没什么效果,为什么呢?是因为现在的session模式它不直接指定当前集群的task manager数量了。大家想想为什么会这么做?就是因为你假如说你把这个task manager数量定死的话,那就会出现,我一旦要是有新的那个作业提交上来之后,然后没有对应的资源,是不是又在那转圈圈啊,必须要等待释放对不对?那大家想这个是不是跟我们前面那个STEM模式就完全一模一样了。
09:13
没有起到没有起到作用对吧,那你直接用那个三模式不也一样吗?所以这里面它其实是想干什么呢?就是我不指定task manager,那是不是接下来就相当于动态分配啊,你要用多少我给你起多少对吧?哎,所以接下来就相当于是你这里面session里边啊,接下来我们就可以直接去在三省里边不停的提交照,然后只要。雅恩上面有足够多的资源,那它就是你现在需要多少,我再给你起对应的新的task manager就可以了,所以通过这种方式就相当于扩充了,就是提高了我们整个集群的扩展能力,对吧?啊,你不要说这个一旦提交满了之后,就在那转圈圈啊,就就没办法提交,所以这个赛事模式就相当于也可以扩充这个能力了。
10:01
就向着那个,呃,就是远离了三模式的那种提交方式,而向着那个pro模式好像又靠近了一点点,对吧,动态分配这个资源啊,这是这个session审模式,然后首先我们是把这个,这才是把这个三审模式先创session审创建了对吧,那创建完了之后怎么提交状呢。非常简单,大家看提交状的命令跟我们前面有什么区别吗?Flink状,然后杠C啊,指定这个入口类对吧,我这里边没有指定杠P啊,然后这个没有指定杠P,是不是就用那个默认的呀,对吧?然后接下来是这个炸包,然后后边杠刚host杠杠泡,这这是不是就是我们当前的这个对应的那些参数啊,所以大家看这这是不是就是一模一样啊。所以大家要注意啊,在我们这个flink集群里边,你如果启动了雅安session的话,那么。后面我们提交drop的时候,它默认就是向雅安session里边的flink集群去提交,如果你没有雅安session的话,默认就是。
11:06
就是STEM模式,找那个S模式的集群,对吧,所以他提交的这个命令完全一样,没有任何区别,这就是这个雅安模式。然后另外还有这个呃,就是session雅安session模式啊,那你如果要是说查看的话,大家看启动之后是不是我就可以到那个雅安的控制台去看到这个东西了啊,然后你去,呃,就是点它的那个trace URL啊,其实也是可以看到对应的那个就是我们flink集群的那个web UI的,也是可以点进去看到的,那要把它关掉怎么办呢?啊,你要关这个雅session的话,你取消那个flink drop的话,作业的话,这个简单,你在那个页面上就能点,对吧?那你要取消这个雅session的话啊,那大家看这个就比较粗暴了啊,直接application q对吧?啊,直接把它Q掉就完事了。这个是session模式,后面还有一个prora模式,其实完就是非常类似,大家主要注意的一点就是pro模式没有雅session对吧,就前面不要创建雅n session,然后我我干什么呢?直接启动执行drop就完事了。
12:12
这个执行状的时候,大家看弗林状还是这个弗林状啊,后边别的参数一模一样,只是在前面加一个杠M雅n classster,这个指代的就是用当前雅恩作为部署环境对吧,集群资源的管理环境,那另外呢,要求使用的是。Per job cluster这样的一个集群模式,当前一个任务就提交这样的一个,就是创建这样的一个集群。这就是这种方式,大家要注意这个雅安cluster,这并不是自自定义的啊,这就是这么写,这个关键字就叫雅安cluster,中间一个杠一点都不能错啊,就就这么写,这就指定的是雅安的pro照模式。啊,所以大家下来之后可以把这些方式都,呃,就是试一试啊,再测一下。
13:02
那另外还有这个K8S的部署方式,这个其实就也是非常简单啊,那大家知道这其实是基于刀客镜像去做提交的,对吧?啊,所以其实也是一个容器化的管理了,它的过程呢,呃,就是先启动这个K8S的集群,先把这个搭起来,然后呢,就是配置各种各样的压模文件,我们这里边主要要启的其实就三个组件啊,就启动对应的那个docker镜像的时候,我们要用到这个样文件,我们主要起哪三个呢?Draw manager。Task manager,另外还有一个叫job manager service,对吧,只要把这三个配置文件配好,然后接下来就直接用这个啊,QB ctl create,杠F啊呃,启动对应的这个服务就完事了。所有的组件容器都容器镜像啊,都都启动起来之后,那接下来呢,就可以访问join manager service给我们提供的那个web UI端口啊,直接就可以看到我们那个熟悉的flink页面了啊,所以整个这些东西都是一样的原理,大家只要呃下来之后测试一下啊,用起来就可以了。
我来说两句