00:00
接下来我们就要开始理论联系实际,把刚刚学过的flink的理论方面的知识应用在项目应用当中啊,那这里边大家看到我们想要做的这个项目呢,基于flink的刚刚学过的啊,然后做一个电商用户行为数据分析,那这个首先我们知道了背景就是电商电商平台,然后我们想要做的呢,数据来源是它的用户行为,用户行为的数据,然后我们要对它进行分析,那分析到底要分析哪些指标,到底有哪些需求呢?接下来我们给大家把这个项目就整体做一个梳理和讲解啊,那首先我们看一下这节课的主要内容,首先我们先简短的回顾一下啊,批处理和流处理到底有哪些区别对吧?啊,先大概的想一想,我们现在为什么要用flink做这样的一个项目,然后呢,呃,就给大家说一说这个电商用户行为分析里边主要要分析哪些。
01:00
东西啊,我们接下来说一下当前我们这个项目到底又要做哪些具体的内容对吧?提取哪些指标,然后后面呢,给大家解析一下数据源,最后就是具体的项目拈划分啊,然后大概的一个业务逻辑也可以带着大家来梳理一下,首先就是批处理和流处理的一个回顾了啊,那这一部分内容呢,其实之前我们也都已经非常的熟悉啊啊就是对于这一部分内容大家想一下,呃,左边这样一划分啊,这几个logo大家都很熟悉,左边这就是哈杜Spark,可以认为就是我们当前这个批处理的代表作,对吧?啊那Spark呢,就相当于是现在这个可以认为是批处理的一个巅峰了啊,就是大家基本上一说起来大数据应用啊,你要做数仓对吧,要做这个呃,离线的一些分析处理,基本上我们认为都是要用到这个Spark的啊,那右边的这个SPA和。
02:00
Pink呢,那就是流处理的代表storm,我们说基本上它是一个流处理的先锋,先锋之作啊,就一开始第一代流处理就是以storm为代表,而后面呢,我们会发现在变化啊,就是我们在这个处理进行这个大规模数据实时处理的过程当中发现啊,第一代流处理以为代表的它的这个实时性是够够好,但是呢,呃,这个吞吐量不够大,处理的数据量不行,然后另外呢,就是对于这种乱序数据啊,要求这个时间正确又达达不到保证,那所以说后面基本上这个storm呢,没有得到特别广泛的应用,而后面更加广泛应用的是所谓的这个拉姆达架构,对吧?呃,就是可能storm门作为拉姆达架构的一部分,然后参与到里面计算的就是一分成两个系统,然后同时实现我们的需求,一部分呢是快速的流处理,另外一部分是批处理,保证结果正确。而我们说现。
03:00
在这个flink就实现了统一对吧?啊,就可以实现一个低延迟高吞吐的实时流处理系统,而且呢,还有不同的时间语义,能够处理乱序数据,保证结果的正确性,另外还有这个非常完善的这一套状态管理机制和容错机制,对吧,就是用这个checkpoint,最后可以实现非常的状态一致性的保证啊,这是关于我们之前讲到的批处理和流处理的一个区别啊,那具体来再来回顾一下的话,批处理简单来讲,它主要应用场景应该是操作大容量的静态数据集,对吧?啊,所以大家可以认为就是说批处理它的特点就是说数据都已经放在这儿了,都已经到位了,然后我们要做的计算呢,呃,就是数据都放在这儿,然后我把数据都读进来开始算,算完了之后,最终返回一个结果就退出,对吧,就是完整的这个计算流程得到一个结果。
04:00
这就是批处理的概念,大家最熟悉的就是这种方式,它也比较符合我们这个流程控制啊,就是写一段这个流程控制代码,也符合大家的这个直觉,对吧,就一步一步做操作嘛,做完了之后返回退出啊,那它的特点就是处理的数据,数据集是有界的,对吧,而是提前已经放在那儿的嘛,大小已经是固定的,不会在后面再会继续来数据了。另外还有一个呢,就是持久化,就数据一般情况我们都是把它持久化存储,放在这个持久存储空间里面的,另外还有一个是大量啊,就是大家发现批处理啊,对于那种极为海量的数据,就是像有一些应用场景里面,大家可能知道那数据量可能达到这个几十T几百T对吧?啊,就是非常大量的的这个数据,你如果要是说直接要对它进行处理的话,那批处理就是唯一的方法,因为你要做流处理,而且这个数据是都已经在这了嘛,对吧,你如果要做流处理的话。
05:00
一个一个去去处理这个读取的这个操作本身耗费的时间就会比较多,而且这个数据就是现成的呀,就已经在这儿了,那可能我们只能用这个批处理的方式去处理这样的海量数据,所以大家发现就是海Spark还是有它经典的这种应用场景的啊啊那另外我们讲这个流处理,流处理一般情况它的特点就是说随时来的数据来一个处理一个对吧?啊,它的特点就是说随时进行计算,然后呢,你要处理的这个数据可以是完全就是我们说无,无休无止,无边无尽的对吧?啊,就是一个无界无界的流,无界的数据,那但是呢,它的特点是同一时间我们其实只能处理一条数据,对吧?啊,就是当前的这个任务,你只能是一条一条来,一条一条处理,那么不同的这个数据记录之间呢,只维持少量的状态,也就是说我们flink就是一个典型的有状态的流失。
06:00
预算,而且我们会发现它的特点是处理工作基于事件对吧,就是任务已经分配好了,启动起来之后放在那儿了,现在呢,数据是没准备好的,所以你看那个之前我们那个,呃,但这个做批处理的时候啊,Spark哈杜普,它是数据都已经放在那儿了,然后接下来我们任务按照这个就划分stage,对吧,一步一步去做操作,而我们现在这个流处理呢,是任务都已经固定放在那儿了,就等数据来,就是铁打的营盘流水的兵,对吧,类似于这样的一个状态,所以说它是基于视线触发的,除非我们明确的把它看走掉,停止掉,否则没有尽头,无休无止。那另外一个就是实时性会比较好,对吧,来了数据之后,它处理的结果历史立刻就会输出,立刻就可可用,而且呢,新的数据来了之后,之前的处理的结果还会更新,这是这个流处理的特点啊,那所以现在我们选用了flink去做这样的。
07:00
的一个项目选型,我们项目想选型用了flink,也就代表我们主要考察的需要想要用到的这个特性偏重于哪一方面呢?哎,那当然我们就是想要更好的实时性对吧?啊大家想你如果要是说这个数据它直接就已经,呃,就是固定的这个大小就已经放在那儿的话,然后我要求这个实时性还不高,对吧?我我慢慢算就可以,那当然这个我们用离线的这个批处理就可以了啊那如果说现在我的这个数据是不停的来对吧,无休无止,无止的不停的来的数据,而且我又要非踌的得到一个处理结果的话,这种场景就非常适合做流处理对吧?啊那大家想想我们现在这个项目项目场景啊,是做用户的行为分析,那是不是用户的行为数据应该就是连续不断的产生,无休无止对吧,而且很可能我们想要的这些统计。
08:00
计算的这个结果都应该要实时的得到反馈,所以我们现在选取的是flink啊,这是关于我们这个项目选型的一个规则。
我来说两句