00:00
我们就开始讲第三章flink的部署,前面我们讲到在使用flink编写代码的过程当中,是在集成开发环境里面,在IDE里面去写的,然后直接运行也是在这个I idea里边就去做测试了啊,那大家其实会发现执行的这个过程当中,特别是这个流处理啊,看的很明显,我们一开始把这个代码定义好了之后,运行起来的时候。他其实根本就是,特别是我们后面这个用了文本流输入数据的时候,他其实根本没有执行这里的操作。因为你还没有数据啊,我们的数据是等着的,一个一个来的嘛,哎,所以那你一开始这里边运行,它是运行了个什么呢。啊,其实我们在这里直接右击去run当前的这个项目啊,去撞这个main方法的时候,其实是在首先在当前idea开发环境里边,要去相当于模拟出启动一个。弗link集群首先要把这样一个flink集群要起起来。
01:02
然后接下来呢,要把当前我们定义好的这样的一堆操作。作为一个所谓的作业,翻译的话就是drop,就把这个drop。首先要打包好,然后提交到我们创建好的这个集群上,也就是说要干什么事儿都已经定义好了。至于说具体怎么干啊,那那那是得等到那个数据进来之后,他才会依次去执行。啊,就是所以他是先把这个要做的任务都已经分配下去,分配到那里。那呃,在这个过程当中,我们就会发现啊,既然在开发环境里边,我们并没有flink集群,是由这里边我们引入的那些依赖啊,在。IDE里边模拟了一个集群,那实际应用生产应用的时候,当然就不能这么干了,那就应该要真正意义上的启动一个集群,然后把当前我们想想要运行的这个作业啊,这个项目打好包,然后去提交上去,它就可以直接运行了,所以整个的流程其实也是类似的。
02:10
所谓的弗林部署就是这样。这里需要给大家说的一下的是,我们先要有一点概念,就是涉及到了几个弗link里边的关键组件啊,啊,他在弗link提交作业和执行任务的时候呢,涉及到的组件主要有这三个,一个是客户端client。还有一个叫作业管理器job manager。哦,当然这个作业管理器就是直接字面的翻译啊,呃,后面的话我们提到可能就直接都直接去叫这个英文名称了,Job manager了,因为其实在源码里边确实有一个类,就是叫这个名的,就是叫job manager。然后另外还有就是任务管理器task manager。好,所以这里面会看到啊客户端啊,他一看这个名称嘛,它其实就应该跟flink集群的关系没没有那么的大,它其实主要的任务应该就是去提交一下我们当前的作业,所以我们的代码它是先由客户端获取到,然后呢,客户端要帮我们把代码做一个转换。
03:14
转换成什么呢?那就是我们这里边的代码只是定义了一些操作,而转换之后得到的就应该是真正在flink集群里边能够执行的那些任务了。所以把得到的这些任务提交给manager,那manager干嘛的呢?一看这个名字啊,Job manager,当然它就是用来管理job的。管理这个作业的,所以他是弗林集群里边的管事。他要做的操作呢,对作业要进行中央调度管理,很多这个中央调度的工作都是由他来做的,他获取到这个执行的作业之后,还会进一步转换,因为他不是最后执行的呀,他是做这个调度管理嘛,谁最后去执行呢,就是所谓的task manager,所以我们看这张图啊。
04:06
这张图里面就看得很明显。客户端client。获取到代码之后,把它转换成一个job,然后把job提交给job manager,然后job manager呢就会把这个再转换成具体可以执行的任务分发给。这里面大家看到task manager就会有很多了啊,分发给各个task manager,然后接下来这是作业的提交,提交上来之后如果有数据进来的话,那是不是就是在task manager里边去读取去计算去,然后最后输出就可以了啊,主要就是task manager去干活了。所以这里边尽管task manager叫做manager,听起来看起来像一个管理人员,像像一个经理一样,但事实上啊,他不就是一个干活的人吗?啊,所以有些时候也直接会把这个task manager叫做worker。
05:00
啊,这其实在弗林里边概念是一样的啊。呃,对于这个很多集群化的这个框架来讲,都是类似的架构,就是master slim嘛啊,就是有一个这个主要的节点啊,主节点负责这个调度管理,另外呢,还有很多就是具体干活分配给任务之后,具体去做操作的这些节点啊,有时候可能叫slave,有时候可能叫worker啊,那这里面我们是叫task manager。这就是弗link里边集群里边啊,主要用到的组件,那接下来我们在部署的时候,主要是要干什么呢?那就是首先要把这样的一个集群要起起来。也就是说我们得配置好一个机器,可能它是job manager,然后呢,可能有很多个机器是task manager,然后把他们的角色都分配好,把他们都起起来,那集群就起好了,集群起好了之后,再由客户端去把作业做一个提交,然后去做乐器。
06:02
那具体在使用的过程当中,Flink呢,其实非常灵活的,呃,它灵活在哪里呢?就是它支持的这个部署场景有很多种。它还可以和不同的资源管理平台进行集成啊什么意思呢?呃,就是说。我们最熟悉的资源管理平台其实就是雅恩了啊啊,那大家会知道,雅恩它其实是把整个集群里边的资源做了一个统一的管理和分配,那比方说如果这里边没有其他的这些资源管理平台的话,那显然就是我们自己应该把所有的这个资源都收集起来,然后做一个分配,启动集群。啊,那如果说这个时候我们集群里边资源不够了,那怎么办呢?那你就只能是自己再去扩展,再去重新做分配了,但是有了雅恩那就不一样啊,雅恩他自己可以去帮我们去扩充,去启动更多的这个节点,对吧?啊node,然后去,呃,把这个就相当于做一个容器化的启动,去扩充pass manager去干活就可以了。
07:03
啊,所以在实际项目应用当中,一般是会跟一些资源管理平台去做集成的啊。我们这里呢,先来做一个快速的启动,有一个初步的认识,后边呢再去讲。跟不同的资源管理平台的集成。好,那首先我们看一看这个快速启动的过程啊,我们看一下。快速启动的时候需要的这些系统的环境,我们这里边给大家介绍的是使用了这个三台的Linux机器,然后这个Linux机器的系统环境,我这里边是centers7.5版本,然后呢,需要安装JAVA8,哎,这都是常规的要求啊,常规操作,然后呢,呃,要求大家安装好卡杜。这个主要是为了后面大家想要测试雅恩跟雅恩这个去做集成的时候方便做测试,如果要是没有安装的话,其实也也没关系啊,就是你不测那个雅恩相关的部署就可以了啊,另外还有就是说我们应该去配置这个SSH的免密登录啊呃,关闭防火墙这些大家都需要去做一些基本的操作,我这里边的机器呢,是这么去配的啊呃,三台机器102103104,然后命名就叫哈杜普102103104。
08:17
接下来我们首先先来做一个最简单的操作,就是本地启动。啊,这个本地启动是怎么个过程呢。好,我们先进来啊,在这里大家会看到我这里边的这个目录安排是这样的。在software下边。这就是flink的安装包flink01:13点零并scla2.12.tz这里边其实我们看到明确的告诉了我们flink当前flink的版本,以及当前所依赖的skyla的版本。我们这里用的是01:13点零,Skyla是2.12,那如果说大家希望去下载一些。
09:00
其他的版本的话也可以到官网上啊,点download这里面就有不同的版本啊。当然这里边推荐的是最新的版本是01:13点二啊,或者你下01:12的话是01:12点五,01:11点四,那如果想一下其他的版本怎么办呢?点这里all stable releases啊,就是所有稳定的这些发行版啊,13.2 13.1 13.0啊,13.2其实就是刚刚发布的啊,13.0其实已经是几个月之前了,前面之前的所有的版本,你如果想用之前的1.9 1.8 1.7啊,甚至更早的版本都可以啊,啊大家看这里边最早提供的就是0.6,所有能用到的这里都有啊,然后给大家看一下,就是你如果要下载的时候,我们点开这这里的bary。如果要下载的话,我们下载的是这里的TGZ文件,大家注意后边的skyla版本,2.11和2.12只提供了这两个版本的下载。另外这里边还有这个Python相关的这些内容,呃,所以关于这一个版本的话,我们这里边就用比较新的01:13来给大家做说明,大家有兴趣的话就去下载其他版本,那这里边首先下载之后当然是要做一个解压了啊,我这里面已经解压了,就不再去执行这个命令了啊,大家可以看一下。
10:19
我这里边直接把它解压到了OPT下边的module这个目录啊,所以它解压之后得到的是什么呢。这个目录名字就叫flink-01:13点零啊B之前我们哦OPT module下边已经看到了,这里面就有一个01:13点零对吧,进来看一下里边有什么,这里边的目录结构呢?首先有一个并。啊,这个非常简单bary嘛,大家知道在这个并目录下边。肯定就是一堆可执行的脚本,各种shell文件,而且我们想要就一般情况下啊,要去执行的命令都是在这里边的,比方说这里面有一个最看起来最简单粗暴也最有用的命令,当然就是这个flink。
11:10
后边如果说我们想要在命令行里边去做任务提交,作业提交的话,就需要用到这个flink这个命令啊,后面的后缀都没有,直接就flink,然后另外。我们看到第二个目录叫做conf com,这是conig。当然就是一个配置文件了,配置文件夹里面都是配置文件,诶,我们看到这里边最重要的一个当然就是这个了,Flink-com.yamo这是一个yama文件,Yama文件是个什么玩意儿呢?进去看一眼。com下边的flink com.yama yama文件是这样的一类文件啊,大家看到这个井号是表示注释啊,然后里边的写法呢?啊,我们看这个其实跟那个叉ML或者是跟其他的一些配置文件都非常像,Properties很像,对吧?啊就是这里边就是一个字段k value的形式嘛,一个字段名,然后冒号后边跟着是它的它的value,它的值。
12:07
啊,所以这其实就是最简单的这种写法啊,我们可以看到这里边的一些配置项主要有哪些,首先一个叫draw manager rpc.address啊,这里面我已经做了更改了,我把这个当前的manager指定成哈杜OP102,这个本身一开始的时候啊,默认应该是local host。啊,所以大家如果要是做单独的指定的话,我们应该把这个改一下啊,改成当前你指定的那个job manager的啊,对应的那个主机名,呃,如果要是说大家做这个本地启动当然不用改了啊,直接就local就完事了啊,然后另外是draw manager的rpc port,就做这个RPC通信的端口号,默认6123,这个不用去改,下边还有一个是draw manager memory.process size,哎,这就指的是什么呢?Job manager给他分配的内存的大小。啊,默认是1600兆。
13:02
然后接下来下边还有一个叫task manager memory process点这是。啊,这是对应的task manager,这是干活的那个人对应的默认的内存空间的大小,1728兆啊,也是一点几个G啊,大家可以按照自己的机器的性能和实际的需要去做这个调整,然后接下来还有两个配置需要给大家说一下。一个叫task manager.number of task slots。这个叫number of task slots,这里有一个概念叫task slots,就是任务槽。稍后我们会专门做解释,现在如果直观的理解的话,就是在别的这个框架里边也会有槽的概念啊,它就相当于是我们这里边拥有的一种资源。啊,你想要去并行执行任务的话,那是不是得有相应的资源才能去执行啊,所以这就相当于你在这个task manager里边给了几组这样的资源,那么就可以并行执行几个任务。
14:02
这里默认是只有一个,那就相当于默认就只能执行一个任务了啊,这是默认情况下就是一,然后还有一个。parallelism.default那大知道parallelism是并行度的意思。默认并行度也是一,诶,这两个看起来好像差不多,后面我们会给大家做详细的区分,它俩其实是不一样的,看起来都跟这个并行有关,但是其实不一样。这就是common,就是通用的一些配置项,当然如果再往下走的话,还有其他的一些配置,比方说还有高可用的配置ha。另外还有。For tolerance and checkpoint,就是所谓的容错管理。容错机制,它主要靠什么呢?靠checkpoint,靠。检查点靠这个东西去去做,这个后续我们都会给大家介绍到,另外还有就是所谓的rest和网页的前端web front end,呃,它就给我们提供了一个可以直接去访问的web页面,Web UI默认的端口是8081啊,当然你可以把它这个注释解开,然后去修改它啊,这些都是去可以去更改的。另外还有一些高级的配置,关于这个安全性的相关的一些设置啊,集群安全性的设置,主要就是这些内容,有一些东西可能我们平常用不到,所以这里大家只要稍微做一个了解就可以了。
15:24
这就是关于当前的这个配置文件啊,那另外除了这些之之外还有什么呢。大家看到这一堆都是log forg啊,那这这是跟这个日志管理相关了,这些我们就不管了啊,Log back,这也是日志管理,这就不管了,大家看到这里面最重要的是有这个masters和workers,哎,所以这就是我们所说的主从关系嘛,Master slave嘛,Masters其实指的就是当前的。Job manager嘛,哎,所以如果我们看一下当前的masters里边啊。这里边应该配什么东西呢?当然就应该配当前的job manager到底是谁?这个默认也是local host啊,我这里边已经改成了102啊,大家可以根据自己的需要去改啊,然后这里边还加上了它的端口8081。
16:12
这个8081是什么呢?就是前面我们说的那个创建出来的web UI,你可以方便去访问它,访问当前这个集群状态的那个端口号。好,后续我们会看到他怎么去用,那另外呢,还有一个slaves啊,不是slaves啊,Workers,这又是什么呢?这当然就是我们定义好的对应的task manager,干活的人到底是谁?在默认的情况下,如果大家想单击启动的话啊,就是默认情况下这个work里边是没有东西的,然后当前这个master当然就是local host,我们前面那个配置文件里面也是local host,这个时候你直接启动就可以了,提起来之后就是相当于就是一个单节点本地启动。啊,就是相当于一台机器,它既是照manager又是task manager,只有它一台机器去做处理集群就是一台机器,那启动到底怎么启呢?就要用到。
17:08
不要用到下面的一个脚本,叫做start cluster。啊,非常简单,直接一句把它提起来就完事了。骑起来之后,你可以看到这个GPS,看一眼啊,可以看到它在本地啊哈,102上有一个stand alone session cluster entry point啊,就是这是当前是一个叫做stand alone session独立集群的一个绘画的接入点啊,一个入口。这其实是那个John manager才有的这样的一个东西,另外还有就是它有一个task manager装,所以我们就会看到哈102既是一个。Job manager也是一个task manager,当前集群就它一个节点。访问的时候呢,直接访问HTTP,它杜甫1028081就可以了啊,这就是最基本的这样的一个用法,那关闭的时候有也非常简单,就是并stop cluster直接关闭就完事了。
18:05
这里面就是都在目录下边start cluster和stop cluster。这就是一个基本的介绍,先有一个基本的认识。
我来说两句