00:00
好,接下来我们就正式开始这部分内容的学习,首先给大家先做一个link的简介啊,我们先大概知道接下来到底要学什么内容,好整体的一个目录,这节课讲什么呢?先了解一下flink是什么,然后我们要说一下为什么要用flink,呃,然后呢,我们再站在一个比较高的层级去看一下整个这个大数据的处理过程当中,流处理的一个发展和演变的过程啊,这就相当于让大家能够一方面学底层的知识,学技术,另外一方面还要有一个架构师这种架构的思想啊,让大家能够把这个视角能够拔高一些,最后呢,给大家总结一下弗林克的主要特点,我们还要跟SPA做一个对比,那这是今天这节课的内容。好,然后首首先先跟大家说一下这个flink是什么啊,Flink它是起源于一个叫做stra SP的一个研究项目,这个研究项目呢,是2010年的时候,由在德国柏林的几所大学发起的这样的一个研究项目,呃,到这个2014年的时候啊,这个项目就被他的源码就被捐赠给了阿帕奇基金会啊,所以接下来就变成了阿帕奇基金会管理的一个孵化项,这是2014年发生的事情,所以大家看这个弗link其实发展还是比较新的,对吧,这个并没有太长的时间,到2015年1月的时候,弗林就已经成为了阿帕奇的顶级项目啊,这个大家知道,就是我们前面看flink官网的时候,大家看这个输入的时候,直接敲flink点阿帕奇,点or RG直接就可以访问网,这就是flink官网对吧?啊所以。
01:54
现在它已经是阿帕奇下面的一个顶级项目了,那大家可能会想到flink本身,这又是什么含义呢?这个项目到底是有什么样的寓意呢?啊,弗link本身是一个德语词汇啊,我们不是说它是这个柏林基所大学发起的研究项目吗?那弗link这个词在德语里边表示的是快速、灵巧的意思。
02:19
所以大家会想到他其实就是要把这个理念要注入到这个项目里边,代表了这个项目的特点,对吧?大家也看到在官网上看到了这个flink的logo是个什么东西呢?对,它是一个小松鼠啊,这个其实比较有意思啊,这就是为什么要用小松鼠作为logo呢?因为link快速灵巧啊,松鼠是不是有这样的一个特点啊啊,快速灵巧,而且呢,这个柏林德国柏林啊,周边当地本来就是有很多松鼠的,而且当地的这个松鼠它的颜色就是红棕色,大家看这个红松鼠的这个颜色比较特别对吧?呃,当地的松鼠本身就是红棕色的一个颜色,然后另外呢,比较有意思的是,大家可能见过阿帕奇基金会的这个logo,它的颜色刚好也是这样的一个颜色啊,所以呢,呃,这个link它的logo就是一个红棕色的可爱。
03:19
的小松鼠,而且就像阿帕奇基金会的这个羽毛一样,它有一个很漂亮的渐变色的一个大尾巴,呃,这就是一个阿帕奇风格的小松鼠,就作为了弗link的logo啊,这是弗Li logo和命名的一个来源,一个小故事啊。呃,那大家可以看一下flink官网上的一个定义,就是what意思阿帕奇flink这里面的第一句话其实就是官网给出的一个定义,这个字有点小,我已经把它放到了这个课件里面。大家来看一。来读一句吧,呃,读一下这句话吧,阿帕奇link,它是啊,对,首先是一个framework,我们提取这个关键词,它是一个框架,对吧?然后接下来它是一个分布式的distributed,分布式的处理引擎,所以大家一看这个定义,这就是用于什么样的一个处理分析的环境里边,啊,分布式的框架处理引擎,那这就是处理大数据的对不对啊,我们在大数据的应用场景里边,一般就要用到这种分布式的处理引擎了,然后接下来大家看它用来处理什么数据,处理什么场景呢?For state for computs。
04:41
它处理的是有状态的计算。呃,这这个时候大家一想,诶,有状态的计算,好像还不知道他说的是什么,没关系,我们到后面会给大家一一展开去介绍啊,然后再看他处理的数据又是什么样的呢?他用的是unbounded andbounded data streams,它处理的是。
05:05
大家看处理的是数据流,对,所以它其实处理的是流式的数据,它是一个流式的处理引擎,这是官网对flink的定义,所以大家从这里边也可以先提取出flink的几个关键词,大概的知道他是一个什么样子,所以呃,我们现在看的话,可能还是有一点懵了,这个概念有点有点太官方,太这个书面化,那具体是什么呢?我们到后面去详细的讲开它的特点的时候,大家可能就会有进一步的认识,好,我们先看一看他,接下来就是他,他当前这个flink到底在哪些地方有所应用吧。啊,这是一个link,当前的一个全球热度啊,呃,其实从一开始fli就拥有一个非常活跃的社区,而且它的社区是在不断的增长的,就是它尽管发展的比较新啊,它本身是一个比较新的框架,但是发展非常非常快,是非常火非常热的一个框架,到目前为止已经有超过500个贡献者为他贡献过源码。
06:19
500个contributor以上,而且它它现在已经基本上是发展成为一个最复杂也是先进的开源流处理引擎了。所以基本上现在业界会认为它是当前流处理的一个巅峰之作,而且有很多人认为它就是未来发展的方向,就是我们接下来做这个实时处理就都要用它了。那在整个的全球范围内,很多公司来自不同的行业,大家看到啊,就是这个热度其实是遍及全球的,特别是北美,欧洲,还有亚洲。而且有一个很重要的特点,大家会看到最热的地方在哪里呢?就在中国,就在我们国内,这个对比还是很明显,如果说中国的热度是100的话,其他地区的热度甚至只有个位数,那这是为什么呢?哦,大家也能想到,一方面可能我们国内也有很多非常优秀的互联网企业,也是世界顶级的互联网企业啊,本身也是站在这个时代的前列啊,就是走在前面的,对这个新技术新的框架接受程度比较高,这是一方面,另外一方面,其实我们也是被被逼无奈啊,啊为什么?因为中国人多,这是一个最大的一个情况,我们要处理的一些场景呢,往往就比较极端,大家可能会想象一下,你说像就拿电商做做例子,像阿里这个双11对吧,京东618什么的这种场景,它的场景是很短很短时间内。
07:57
大量的数据,千万级别上亿级别的数据就来了,对吧?那这种场景可能在国外真的是一辈子都遇不到这样一次场景,呃,所以说我们如果在这种情况下要处理这么大规模的数据,你还要实时啊,你还要特别快的去处理这种级别的需求,就导致就倒逼着我们的企业一定要去做出一些调整,一定要去用更新更好的技术,技术解决这个问题了,所以大家会看到flink现在在中国的发展和需求其实是最高的啊,发展也是最快的,那大家看一看在国内有哪些企业在用福林可呢?
08:42
呃,其实这个一看啊,就是几乎所有的一线大厂都在用flink,以阿里为首的一众大厂,呃,整个所有这个涉及的行业也是各行各业都有来看这个阿里,呃,还有这个京东,这是电商啊,那像这个腾讯,那这就是,呃相当于是社交做这个即时通讯了,网易这是门户网站,后边这个滴滴这是打车软件,后边这个携程这是出行对吧,360是安全,爱奇艺这是视频网站,大家看各行各业都在用,很多大厂都在储备福林各方面的人才,在朝这个方面做迁移,在发力。
09:25
那大家可能就会想到,为什么这么多企业,这么多公司都在想用弗Li克呢?都在往弗link上做迁移呢?弗link到底有什么好处呢?啊,这就是为什么要选择slink了,大家首先想一下啊,我们平常要处理数据的时候,我们的数据到底应该是一个什么样子的呢?固定诶这里涉及到一个很有意思的问题,大家可能会想到在生活当中,我们面对的数据是连续不断产生,没有什么规律,随时产生,随时应该及时的去响应,及时的去处理的呢?还是说诶,它产生的时候我们不用及时的去处理,等他攒够一批之后再统一去处理呢?我们一般的这种处理方式是什么样的呢?以前的哦,大家可能会发现这是两种截然不同的处理方式,对不对?哎,我们以前的方式其实大部分是攒一批,攒够一批之后,然后做一个批处理,对吧?啊,这是一种方式与之对应,另外一种方式是什么呢?
10:39
流,对,那就是所谓的流处理,他的想法是什么?就是数据就像一个水流一样,他在连续不断的来,对吧?呃,就是有头无尾这样的一个数据流,你只要一来了数据,我就应该马上做出响应,马上去处理,应该是这样的,对不对?呃,那大家想一想,这两种处理方式哪种更好哦,有同学就想,这就看需求了,对吧?可能各有各的好处,这里面就可能要跟大家说一下,在真实的应用场景里边,生活当中的数据,到底它本身应该是流数据还是批数据呢?生活当中啊,当当然这个也就看具体情形了,我们更加常见,经常能够见到的其实应该是其实是旅游数据更多一些,大家可以想象一下最典型的一个场景。
11:37
其实就是聊天,大家可以想象啊,就是平常你在聊天的时候,你是想说一句话马上就发送过去,然后别人看到就马上回复,这样叫聊天呢,还是说我想说的话我都攒在心里对吧,然后攒一劈一下子花一个回车全发过去,让别人去看,然后去回复,哪种更加符合我们的聊天习惯呢吧,这说第二种,那第二种的话一看就是助孤声对吧,这个就就显然是平常就不会聊天,你如果这么聊的话,这个就得不到及时响应吧,我们要聊天的话,当然就是说有话就马上发过去,然后呢,别人就会做做反反馈,我们继续再再给他发下一步的进一步的话语,这就是你一言我一语,这才叫聊天嘛,所以这其实数据的产生过程是一个连续不断流逝产生的过程。所以这是一个。
12:37
流数据,我们比较处理流数据是不是更好的方式就是流失处理啊,来一个就去处理一个,呃,这是大家最常见的一个生活场景,除了聊天之外,还有什么场景也是类似的这种牛数据呢?大家可能会想到,比方说我们这个像现在啊开车是不是都有这个GPS定位信号啊?
13:00
那它的GPS信息是连续不断产生的呢?还是说哎,是突然一下子一批产生出来,然后我们一下子去处理呢?这显然也是连续不断产生的,对不对啊,你的这个位置是有可能随时在变化的,它当然是要连续不断的产生,连续不断的去处理的,这也是典型的一个流处理,流数据和流处理的一个应用场景,呃,那另外还有一些场景,大家会想到,就像这个金融里边的交易场景,你去发起一笔交易对吧?啊,转账去,呃,做一些这个交易的操作,这显然也是连续不断发生,来一笔是不是就应该处理一笔啊,而不应该攒一批去处理,对吧?啊,另外还有一些像我们的这个,呃,网络的这些日志,或者说我们自己这个服务器的一些日志,它是不是也是连续不断产生的啊啊,那那我们平常有可能是把它要攒一批去处理的。但事实。
14:00
让它产生的过程还是连续不断的,对吧?诶,那大家会想到我们传统为什么不去把这个连续不断的数据来一条就处理一条呢?我们传统是怎么处理,往往是攒一批去处理的,对吧?为什么我们不这么去做呢?哦,大家就已经想到了,流处理相对于批处理其实要求会更高。呃,其实从生活场景上大家也会比较好理解啊,就是你说如果让你去做一件事情的话,你是更习惯于随时,就是比方说呃,让你要去打一篇文章啊,但是这个文章的内容它是分一小段一小段不定时的,随时给你推送过来的,让你去把它打印出来的。你更习惯,你是说我等他这一批文章,你那边要给我的这篇文章都到齐了,我啪一下把它打出来呢,还是说你来一个我就马上去打一段,来一个就马上去打一段,大家更习都习惯的,可能就是说等他一批都来了之后,对吧,我统一把它打出来,这样好像更符合我们的这种处理习惯一些,但是大家会想到这种处理可能更简单,因为如果你来一段就处理一段的话,这相当于我们随时是处于一个on call状态,我随时要切换这个工作场景,对不对啊,你马上我就得放下手头的事情去响应这个事情,这显然会耗费更多的系统资源,耗费更多的这个能量啊,呃,那那为什么?
15:37
那么大家会想更好的处理场景是来一个就处理一个,来一段就处理一段呢?还是说我攒一批直接去处理呢?攒一批处理这种方式有没有问题?它的好处其实很明显,就是把我们连续不断不定时的对吧,有头没尾的这种数据给我们明确的做了一个截取,截取了一个有限的数据集,对不对,那有了这样一个有限的数据集之后,我们做分析处理就简单很多了啊,这是它明显的一个好处,所以传统的数据架构,数据处理的架构,特别是大数据领域啊,一般都是这么去做的,但是它的缺点也非常明显,那就是什么,我是不是必须要等到所有的数据都攒齐了,才能够去做处理。
16:34
那攒数据的这个过程是不是相当于你什么都没做啊,数据本身已经产生了,已经来了,你其实已经应该有所响应了,但是你什么都没做,最后攒了一大批统一去处理,是不是就会很慢啊?所以传统的这种架构,我们一般说它是离线处理对不对?它的延迟,它本身的这个要处理的时间就会很长。
17:01
那大都会想到,在传统的这种架构来讲,我们如果要就觉得他这个延迟是不可避免的,一定要有的,那可能我们也就只好接受了啊,那你就等着呗,对不对?离线跑一个任务等上几个小时,甚至等上几天,跑完了之后我们再去把它结果拿出来,但是现在很多场景可能我们就等不了了,对吧?数据是马上大量的产生,我马上现在就要得到一个分析的结果,那这种场景怎么办呢?当然就要把这个延迟做的更低。所以最好的状态是不是就应该按照数据真实产生的时候,它产生的时候就是连续不断像水流一样产生的,那是不是我们响应去处理的时候也应该按照流逝的处理方式啊?所以这其实是更好的一种方式,那我们的目标是什么呢?是不是就是要做到来一个就及时的去做处理,得到一个更低的延迟,不要去再对吧,不要去等待所有的数据都到齐了再去做处理,那与之同时只要低延迟就够了吗?
18:12
大家想一想诶,如果你只保证低延迟的话,其实大家会想到你在这个数据量比较小的时候,其实这个很容易做到啊,这不就是对吧,这没关系吗?我就一台服务器,你数据来了之后,对来一条数据处理一条,来一条数据处理一条,这很快啊,很实时啊,没有问题啊。但是现在我们的数据量很大,我们研究的是大数据的场景,那大家想你要处理大数据,那是不是不得不就把它变成了一个分布式的处理环境,分布式的环境里面,我们就要求你能做到更高的吞吐量,对不对?必须得满足更高的吞吐量,这个过程当中又带来了一个问题是什么呢?就是既然是分布式了,那不同的机器处理的时候是不是会有网络延迟,处理速度也会有所不同,对不对,那接下来有可能我们处理的数据可能是不是就会出现乱序。
19:14
有可能本来一条先发生的数据,是不是到我们这里边处理的时候,可能就到后边才去处理了,这个时候如果有一些我们的处理结果是跟时间相关的,是跟它的处理顺序相关的,那是不是就会出现结果的错误啊,啊,所以这里带来的一个问题,我们是不是还得保证结果的准确性啊,另外还得有一个良好的容错性,这说的是你在这个过程当中,假如说你既然分布式的架构嘛,对吧,那假如说有一个任务挂了呢,有一个机器挂了呢,是不是我们还能够从这个故障当中恢复出来啊,能够把它恢复到之前正常的某个节点,然后再重新来过,这是我们希望达到的一些目标,所以在这个过程当中,我们可能要满足的条件,希望达到的这个要求就非常非常高了。
20:14
那传统我们的很多做这个大数据处理的一些分析框架啊,其实这些要求是能达到一些的,但是他们做的都不够好,他可能能做到一个或者几个,但是全部满足就做不到了,因为大家可能知道这个在学校里边我们也都有经验啊,一门功课很突出啊,确实你这个学的不错,确实很优秀,但是呢,这还不足够好,什么样的学生才最难得呢?门门功课都优秀对吧?所以现在我们要学习的就是一个门门功课都优秀的这样一个优等生,这就是弗link,他同时满足了这几个要求。好,那它是怎么满足的,这就涉及到Li里边的一些原理了,这个我们在后边的讲解过程当中会给大家一一展开。
我来说两句