00:00
边已经知道了三啊,独立集群里边有怎么样的一些操作,怎么样用不同的部署模式去做部署提交,那接下来我们就要看一看,跟资源管理平台结合的时候,又该怎么样去提交呢?这最常用的资源管理平台当然就是雅恩了,我们说前面这个独立集群用它其实最常用的就是绘画模式,绘画模式呢又有非常显著的缺点,因为这个集群的资源没有办法去动态分配嘛,所以我们需要跟。另外的独立的这些资源管理平台去做一个结合,最常见的就是结合雅恩了,那雅恩上部署的过程呢,整体来讲就是。客户端,我们先把这个flink,一个flink应用先提交给雅恩的resource manager。啊,大家可以想到,就是说这种提交的过程,主要其实就是要让雅恩的资源管理器帮我们把对应的这些。相关的这些。
01:00
工作啊,要要管理起来,对吧,把资源要管理起来,所以接下来他分配资源去做任务执行的时候,都是由雅恩做这个最初步的。调度和分配的。接下来雅恩的这个resource manager,他会向雅安的那个node manager去申请容器,那么在这些容器上有了这些no manager容器之后,就会部署join manager和task manager的实力,这样的话就可以齐起集群来了,对吧?然后有了task manager,当然就有了task slots,这就是flink可以去执行的资源了。好,接下来我们来看一下这个,呃,具体的这个过程啊,呃,然后首先我们这里边是要给大家说一下相关的准备和配置,对于这一个弗link而言啊,这里要给大家说一下一些不同版本的区别,就是在弗link1.8版本之前,如果想要用这个雅恩模式部署这个弗link任务啊,你是要去下载不同版本的flink的,这个可以给大家简单说一下,假如是1.8之前,比方说我们选一个1.7.2。
02:07
大家会看到这里边能选的这个特别的多,你看我们后面其实主要就是2.1和二点一二两种版本吧,这可不止,这里面还有什么呢啊,大家看还跟着这个哈杜普。哈杜甫24226啊二七这个二八,呃,各种不同的哈杜版本,这指的就是说在这一个flink版本里边,它加上了哈杜普的支持。所以说你如果想要。呃,这个把弗link部署到雅安集群上的话,那就必须得用有海多夫支持的版本,这是1.8之前必须要这么做。那1.8之后就没有这回事儿了,大家可能会发现,你如果要是1.8对吧。一点八点三点开之后,你看诶,他就只有这个2.12.12了,但是1.8他们也不是直接就能用的,就是他是不提供这个有哈杜普支持的这个编译的flink安装包了,你如果需要这个哈杜普支持的时候怎么办呢?你是需要在这个官网上自行去下载,在这里大家看additional components。
03:14
这里边提供了哈杜普2.4.1 2.6.5对吧,2.7.5 2.8.3不同版本哈杜普的支持啊,就是你要把这个对应版本的这个支持下下来,然后放到哪里呢?放到flink安装目录的那个。叫做lib library library就在这个下边,所有的这些炸包是要放到这儿的。所以你如果要是需要对应的这个好度不支持的话,把那个下下来放到这就可以了啊,当然在这个01:11之后啊,01:11之后这个也不需要了啊,就我们当前这个01:13那就更不需要了,它主要是干什么呢?主要主要就是做一些环境变量的配置就搞定,这个就简单很多对不对啊,就是相关的这个支持就更好了啊,那这里边的主要环境变量配置主要配什么呢?啊,关键就是你要配一个这个哈杜op class pass。
04:10
必须要有这个环境变量,那一般情况我们可能大家只要增加这几个环境变量就可以啊,你加上这个首先哈,Op home把它加进去对吧,然后加一个hardop,呃,Com Di后再加一个哈杜op class pass,只要有这几个一般就没有问题了,到这个步骤一步一步做就可以啊,然后另外就是还需要去把这个海杜普集群要起起来啊,我我现在的话,这个海杜普集群已经是起挤着了啊。哈,102这里边是这个a name node对吧。然后这个103。103这里大家看到啊,这有这个resource manager,这就是雅的resource manager啊,我们这里边配置这个雅恩的这个这个主节点是103,然后这个104里边。104里边啊,这个data node啊,这里是secondary name node,当前主要的这个配置是这样的,呃,那在用这个雅恩去启动之前,我们先把之前启动的这个集群先关掉吧,并stop cluster。
05:14
好,先把它关掉,再看这里面一关的话啊,不同的节点上的这些进程就全关了啊,这边102上啊,没没有那个job manager进程了,103上也不再有task managerner这样的一个进程啊,104上同样也就没有。那当前就只剩下哈杜甫相关的这些这些进程了啊好,现在我们哈杜甫都已经提起来了啊,接下来呢,就是可以去修改这个配置文件啊,修改对应的配置,如果说大家还是希望用之前的那些配置的话,不改也行啊,就是单独的去做一下测试就可以了。然后接下来我们要做的,那就是。去做雅恩上的部署提交,那这里边要分不同的模式去做部署,前面我们不是讲过这个绘画模式吗?我们先看雅恩的绘画模式怎么去部署。
06:04
那当然就是首先需要去创建一个雅恩的绘画了,雅恩session啊,通过这个雅恩session来启动flink集群,那这个步骤呢,就是。下边。有一个脚本叫雅恩session sh啊,所以这一个脚本就是单独去启动一个雅安session,这是flink直接就给我们带带着的一个东西啊,啊,所以在这儿我可以直接去。B Yan session啊,这里边我可以杠NM,就是给一个名字对吧,当前的雅安application给个名字。把它吸起来。大家如果想改配置可以去自己去改啊,这个当然并不是特别的重要。啊,大家看到这个job manager web interface啊,这里面给了一个这个哈,104。
07:02
我们把它copy一下。好,现在就已经起起了一个集群,因为大家知道三模式绘画模式就是先起集群后去提交作业啊N,所以说现在这个是完全没有问题的,直接一起就起来了。我们这里可以访问到这个页面,那就说明这个集群已经提起来了。这个集群稍微有点奇怪,它的这个状态是没有task manager,当然也就没有task slots了,它的资源是零,这是为什么呢?啊,这里需要给大家稍微解释一下,就是在这个雅安session。呃,这一个启动命令的时候呢,后面是可以去加一些参数的,它可以加什么呢?啊,比方说加杠D啊,这是一个分离模式,Detach的模式啊,就是你像我们这里面提交了之后,大家会看到就一直挂在这了,对不对啊,这样的话,你你如果要是退的话,直接这个CTRLC退出来了,退出来之后你如果想要看当前的这个集群,那就其实关了嘛,当前的雅安session给关了嘛,啊你如果不希望出现这种情况的话,那当然就可以在这个基础上加一个杠啊,复利模式,这样的话起来之后就互不影响。
08:21
我们继续看,还有就是GMM这干什么呢?其实就是按我们那个配置文件里边配的那个drop manager内内存一样啊,指定当前job manager的内存。然后呢,哦,NM就是我们那个任务名对吧,当前的那个application name,然后另外还有就是Qu就可以指定当前雅恩的队列名,还可以指定TMGM是John manager内存,TM当然就是task manager内存对吧?啊,这个你也可以直接杠杠John manager memory啊,啊,这个也可以直接杠杠task manager,这都是可以指定这个对应的一些内容的,那大家可以想到,诶,那就不对啊,那之前我们那个flink集群配置文件里面不是还可以指定。
09:04
每一个task manager有多少个task slots的数量吗?啊,另外就是说到底有几个task manager不是由那个workers那个配置文件直接去指定的吗?你这启动雅安session怎么就没有参数去指定呢?其实原先是有的啊,原先它有另外两个参数,一个叫杠N,另外还有一个叫杠S,杠N指的就是大家知道N就是个数嘛。杠N指的就是到底有几个task manager,那杠S呢,指的就是每一个task manager有多少个task slot。好,但是这种方式大家会发现,这就相当于什么呢?相当于也是一开始就把雅恩session啊,整个这个集群对应的这个flink集群大小就固定死了。有多少个task manager,有多少个slots啊,直接就定死了,所以在这种静态分配的这种场景下,其实也是一种资源浪费啊,有时候一开始我们根本就不需要那么多的资源嘛,因为本来雅安就可以动态分配,你需要的时候再去分配不就完了吗?所以从flink01:11版本开始之后,这两个参数就没用了。
10:12
好,那现在我们怎么样呢?现在雅安的绘画模式就是动态分配的,所以一开始你直接不加任何的参数啊,启动也是可以的。另外因为哈杜102这个没有办法变,我们的代码里面写死了嘛,NC必须是基于它,所以我们可以在别的地方,可以在哈杜103上去起一个雅安session-m test-D啊。我们可以把这个提起来啊,当然这个要求就是说必须把对应的那些环境变量都要配好,要不然的话它是不支持的啊。好,接下来是这样的一个。这样的一个web UI的接口。大家可以看到,现在提起来了,空前的亚安三省这个集群已经放在这里了。那接下来我们自然就是并。
11:04
Li RO去提交一个作业了啊啊,这个提交作业的过程,大家会发现跟sta集群里边去提交作业的方式是一模一样的。好,这里边我们甚至都不需要我们说在在本地的话,其实你也不需要去直接杠M了,对吧,因为当当前的这个job manager,它是直接在这个雅安里边去管理的嘛,我们没有必要雅安30里边去帮我们管理的,所以当前我们不需要再去指定这个杠M,指定到底谁是这个job manager了,所以直接弗link run,然后指定当前的入口内。Stream word count,然后后边加上当前的抓包,我们把它提交上去。大家看现在已经正常提交了,对吧。好,我们现在看一眼。现在果然是一个running job对吧,这是一个正在运行的一个,呃,这还在create create啊,我们看一看它能不能正常的运转成功,然后提交了这个drop之后大家就会看到。
12:10
当前的task manager是不是就变成一,然后total task manager,呃,Tasklo就变成一了,一开始的时候这是零对吧,全是零,现在提交了一个任务,这里边就多了一啊,所以大家可以看的很明显啊,啊,它是这样的一个过程,那现在有一个running job,当然我们就可以在102里边。这里面去输入一些数据,Hello word。来看一下当前是不是能看到他的,现在只有一个嘛,所以我们直接看它的输出,大家看只有一个的话,当然就是HELLO1WORD1都放在这里了啊,所以这个是完全没有问题的。当然,他也可以继续。在103这里。大家会看到我这里边直接把它CTRLC是没有关系的,因为提交这个作业这个过程其实跟我们这个客户端已经没有关系了啊,已经提交上去之后,这样就肯定是可以。
13:08
继续去运行的,那这个时候我当前已经没有可用的task slots了,如果这个时候我要继续去提交作业可以吗?我们继续去提交,而且这里边我加一个并行度杠P2。啊,大家看现在又提交成功了。接下来我们在web UI上再去确认一下,刷新一下。诶,大家看现在round drops有两个了,诶,然后现在task manager有几个呢?我们看刚刚刷新了的啊。Task manager变成了三个,Total task slots变成了三个。所以我们可以推测的出来啊,第一个提交的时候并行度是一,它是不是占用了一个slot。诶,一个slot,然后我们默认一个task manager,一个slot嘛,所以它就起了一个task manager,然后接下来如果又要并行度是二的时候,它要占用几个slot呢?呃,这里边占用的是两个,那现在资源不够,那怎么办?再去启动两个task manager,每一个都有一个task slo,这样的话就可以够我们的资源去运行了。
14:15
啊,所以大家可以看到它是这样的一个状况。当然在这个呃,运行起来之后,大家会看到他的这个作业图跟之前这个是有所区别的啊,大家会看到当前一共有五个任务,第一个第一步操作有一个并行任务,第二个操作有两个并行任务,第三个有两个,而之前的这一个并行度是一的时候呢。它就很简单,它只有两个任务,然后并行度都是一,它们的区别在哪里呢?为什么?呃,我们后面的并行度是二的时候有三个任务,现在就只有两个任务呢,啊,之前是三步操作,这里只有两步操作呢,仔细观察大家就会发现。这相当于是把之前的S读取数据源和flat map又合并到一起了。
15:03
诶,所以大家会发现这好像在某种情况下可以把它们合并在一起,诶所以这还是挺有意思的啊,这到底是怎么回事呢?诶什么情况下它就可以合并在一起呢?你看这个这样一个箭头,好像就是把前后的两个步骤啊,前后的两个代码里边的操作合并在一起的意思,什么时候就可以合并呢?最后它到底一共有多少个任务呢?呃,然后我们再。占用这个资源的时候,到底又要占用多少slots呢?这其实都是我们在这里发现的一些问题,大家可以带着一些问题继续去看我们后边的内容啊,那关于雅恩模式呢,我们就介绍到这里。延安的session审模式是比较有特色的,所以说这里边我们就给大家讲解一下,因为session审模式也已经是动态分配了啊,所以现在其实就没有绘画模式的那个局限了,它其实就可以非常灵活的应用,在这个实际项目当中使用也是非常多的啊,那如果说大家可以在这个雅恩的页面里边,也可以在flink的web UI啊去看各种信息,那如果说想要去取消的话,当然你也可以在UI上直接。
16:08
呃,Cancel就可以,或者说直接在我们的这个命令行里边,直接去cancel也是可以的。除了绘画模式之外,还有单作业模式的部署,那这个呢,比较有特点一点,他提交的时候呢,就不需要单独去。先启动一个雅安session了,而是怎么样呢?直接提交,因为我们说单作业模式,就是提交一个作业就启动单独的一对一的集群。那他提交的时候怎么提呢。直接也是直接弗林run,弗林克run,大家看到这里边加了一个杠T参数,然后雅恩drop。诶,这样的方式就表示我当前是用雅恩的单作业模式去提,提交当前的作业的,后边的参数都完全一样啊,这个杠D是我们的这个detect模式啊,就是分离模式。
17:00
大家会看到就是早期版本有另外一种写法,就是杠M雅恩C特,这跟我们前面的那个杠M有点像,我们前面的杠M是指定了当前的哈杜福102是John manager嘛,指定了当前的这个集群,那这个呢,也就相当于是指定了集群是当前的雅恩集群,哎,所以既然指定了雅恩集群,那当然就是一个单作业模式了啊,现在既然变了,大家还是用这种啊,这个看的更更明确嘛,杠T雅恩pro job,这就是一个单作业模式。直接就已经提交上去了,创建一个集群。然后另外还有这个应用模式,应用模式非常类似,只不过它用的呢是flink wrong application,然后后面是杠T雅安application啊,整体来讲就是非常简单,跟跟前面的这个操作都都是完全一致的啊,这就是关于这个雅恩模式的部署,在实际的项目应用当中。用雅恩去部署是肯定的,所以大家至少要会用雅恩里边的一种模式,绘画和单作业至少要会一种。呃,绘画其实是最常见的啊。
18:05
然后另外还有就是K8SKS,大家知道这就是容器化部署啊,Doer镜像基于刀客镜像的这个部署,这里边我们就不详细去说了啊,感兴趣的话啊,可以去查一些K8S相关的一些部署方式,主要就是配置了,我们这里就不详细展开。这就是关于部署这一部分的内容。
我来说两句