00:00
好,来吧,我们接着说啊。呃,那终于啊,我们经过这个。十来天啊,这个十天左右的时间啊,把这个项目呢,算是把它做完了。好吧,那我们从这个,呃,最开始啊。从这个采集数据。对吧,到这个数据的分流操作。嗯,然后呢,分流成了这个明细数据。然后呢,我们再去做进一步的处理啊,最后呢,得到的是我们的这个宽表数据。啊,然后呢,最后呢,再基于这个快报数据呢,我们做这个数据的一个分析啊,整个的这个实时处理流程啊,就已经把它这个全部都走完了啊呃,那在我们这个整个这个项目中的话呢,我们重点是围绕着两个任务来去展开的啊,就一个是我们的呃,日活的一个统计啊,再一个是这个就是交易啊,就是这个订单的一个统计啊,订单相关的这个指标的一个统计。啊,但是呢,这并不代表着说我们整个的项目,或者大家这个将来接触的项目啊,就是在做这些东西,不是的,这个只是在给你讲一种方式。
01:01
就比如说我们想通过这个Spark streaming,然后去做这个实时处理了,诶那我们现在讲的这一套方案呢,你是可以去照着去用的。理解吧,啊,当然你将来你具体要去做什么样的分析,比如说你是做订单的还是做日活的,还是做别的啊,这个就不一定了。OK吧?所以说呢,你们不仅要把我们课堂上讲的这几个任务把它学会,而且呢,你还得能够照着我们课堂上讲的这几个任务呢,自己能够去扩展出来别的,比如说我现在让你统计一个不同的指标。诶,那你会不会去做啊,你应该采集什么数据,数据应该怎么去做处理,最后我应该怎么去做分析。对吧,你呢,把这一套流程自己把它梳理出来,自己把它想出来啊,那我觉得你这个项目学的还是OK的。好吧,行,呃,别的就不多说了啊,这个最后的话我们有一个总结啊,呃,那整个这个项目总结的话,嗯,我带着你们去把它就做一个系统的一个梳理。好不好,我们就把这个整个项目中,我们所涉及到的这个点呢,都给你做一个系统的梳理啊,但是呢,我只给你一个大概的一个架子啊,然后呢,细节的东西呢,需要你下去以后自己补充。
02:08
好吧,就不要每次都等着别人给你准备的特别的好啊,准备了100%,然后你再去看那个就没意思了。对吧。这个给你准备成100%,你顶多就是把它收藏一下啊,重在拥有。是不是很少也会有同学说我专门打开了去看,专门打开去分析。啊,所以说呢,这一次呢,我就不再给你总结那么细啊,我就给你一个大体的价值,然后呢,下去以后呢,你自己去优化它,自己去补充它,那么你在优化,你在补充的过程中,其实就是你在总结的过程中,那你就可以进步。对吧,你经过自己的思考了,你经过自己的这个分析了。那这个东西一定是会进入到你的脑子里面的,会记住的。而且你在写的时候呢,你你就得去梳理自己的话语,对吧,这句话应该怎么说。那你把这个过程走一遍以后,那你将来找人去聊天对吧,别人问你啊,你的这个项目中你都经历了什么,你都遇到过什么问题,你是怎么去解决的。
03:04
你才能够,诶一五一十的对吧,这个第一点第二点第三点第四点给他这么都罗列出来,都会来说出来。如果说你根本就没有去做,你现场去组织那个语言,现场去想那个东西,我跟你讲你完了。对吧。你面试那可不是说这个平常聊天啊,你本来就很紧张,然后呢,再加上这个需要你现场去,自己去这个想一些东西,那我跟你讲,嗯,基本上是凉凉啊好吧,所以说任何事情都是要提前准备的。机会都是留给有准备的人的。OK吧,同学们,行来接下来的话,我们就把这个整体去做一个梳理啊,嗯。我就通过这个。脑图工具啊,给大家这个把这个整体的架子梳理一下啊呃,这个我先存一下啊。另存为啊呃,我的电脑啊,这个叫做。
04:01
实施项目啊,总结啊。好,保存到我们的。就这个实施项目里面啊,保存这个代码中啊好来吧,这个写一下啊,这是我们这个Spark这个实施项目啊,行呃,那我们。这个整个这个项目中啊,我们先说一下我们都用到了什么技术,对不对,我们再去总结每一个技术啊呃,那首先我们用到了最核心的一个技术,那必然就是我们的这个Spark了。对吧。呃,除了八个之外,再一个最核心的,那必然就是我们的卡不卡了。对不对啊,这应该是最核心的啊,好,再往后的话呢,就是我们的,呃,这个RA肯定是啊,这没毛病啊,这也是用的最多的。好吧,还有什么东西呢,嗯。
05:01
这个除了这个之外啊,还用了什么东西啊,同学们想想吧。这个Spark卡不卡,嗯,这个。还有什么呀,是不是还有很多呀,比如说我们的ES elastic search啊。对吧,啊。这个ES还有什么东西啊,嗯。这个Maxwell也算吧,是吧,这也算一个吧,这也是算我们这个整个项目都用到的东西啊Maxwell OK吧,行,还有啥东西呢,那还有就是我们今天讲过的呗,这个。差不多吧。啊,这个跟我们跟我们这个第一天讲项目给大家去梳理的这个知识点应该都差不多,对吧,就是用了这么些个啊还有一个这个SC是吧,这个SKY的话呢,呃,我就不计划总结了,那就是你的基本功哈,那就是你的基本功好吧,行,那接下来我们就挨个去说一说啊呃,那我干脆这样吧,这个拖过去几个得了啊这样看着这个,呃,看着这个舒服一些是吧。
06:11
好吧,啊,这样啊,这个舒服一些啊来,那我们先去看这个Spark卡不卡啊,嗯,这个Spark里面我们都用到了什么东西啊同学们。啊,这个Spark里面主要是这么几个环节啊,第一个就是我们的算子,这一定是最重要的啊,不是孙子是吧,这一定是最重要的啊扇子,然后呢,第二个比较重要的就是我们的这个实时的一个实时就是这个Spark streaming啊对吧,这个Spark streaming的一个使用。好吧,当然了,这里面我还用到一些这个边边边角角的东西啊,比如说什么这个广播变量什么的啊,对吧,广播变量什么的啊,这个其实也用到了。是吧,啊,这个没有用的,我就不再说了啊好,这个广播变量其实很简单啊,这个不多说,那这个Spark streaming的话呢,我们呃,先总结Spark streaming吧,好吧,这里面我们需要会的是哪些东西呢?
07:09
第一个,那你的这个什么呀,环境的搭建你得会吧,对吧,这你必然得会啊,再一个呢,就是你的数据源,数据源啊,这个数据源你们应该讲过很多啊,但其实我们用的比较多的,其实就是卡不卡。对吧,你怎么通过这个Spark streaming去对接这个卡夫卡。能理解吧,对接卡不卡,然后呢,这个里面的话呢,我们是有两方面,第一方面就是你在对接卡不卡的时候,我们在消费数据的时候,我们是有。叫默认奥的消费,还有个什么呀,叫什么指定消费。对吧。这是你要会的。好吧,行,这个环境搭建没啥啊,这个不多说,然后呢,重点还是说一下我们这个算子啊呃,算子的话呢,我们有这个还是行动算转换算子啊。
08:08
好,再一个是这个行动,算,呃,都跟着我来想啊,同学们。都跟着我来想啊。好。呃,这个转换算子中,我们来罗列几个啊,用的最多的map map part。然后呢,Transform filter。对吧。还有什么呀,同学们。Join。呃,还用过什么呀,同学们。我们在这个项目中用过的啊。Map map,地水,然后呢,Transform filter,呃。Join,差不多了吧。啊,我们在这个项目中应该用过了,就这么几个了啊来别的我就不总结了啊好,这个行动算子的话呢,我们大概有这么几个啊,第一个是for。
09:09
第二个是partition。好,再一个是RD。对吧。呃,这个其实严格来讲的话呢,不能叫算子啊,严格来讲不能叫算子啊,但是呢,呃,我们就这个自己理解嘛,我就把它归到这个算子中了,好吧,归到算子中了啊,这个算子应该是你的这个RDD的啊,所以你看像这个for r DD,像transform,这就不能叫算子,明白吧,就不能叫算子啊,但是呢,呃,我就统一把它都归进来吧,你就知道它是行动的,这是什么转换的就完事了。好吧,还有一个这个printer啊,这也是我们用过的啊,基本上就这么几个吧。好呃,这是我们用到的啊,然后呢,这个里面你们下去以后需要自己做的事情啊,来我说一下啊,就是自己自己补充什么呀,补充东西啊,补充什么呢,就是每个算子的功能。
10:07
啊,然后呢,算子的执行位置。算子的执行频率。好在项目中的应用场景好吧?这是你们下去要自己去做的东西啊。呃,这个应该是能理解的吧。嗯,哎,我那个。诶,这个工具。嗯,稍等一下啊。行吧,就这样吧啊来这个下去后大家怎么自己去补充啊。就你们要自己做自己做点事了啊,你要不自己做事儿,那肯定是不行的啊,自己补充的东西啊。
11:01
自己补充东西,我这个怎么调不了东西啊,我看看啊。嗯。哎,算了,不调了吧,啊,就这样吧啊。来吧,就这样啊,呃,这是你们要自己去补充的啊,这是我们这个算子中的东西,OK吧,这个其实应该是整个这个项目中啊,对于这个Spark的这个考量最多的一个点。明白了吧,下去以后自己去补充啊好来,那这是我们这个Spark相关的东西。OK,然后接下来我们再说这个卡不卡吧,好吧,说卡不卡啊。卡夫卡的话呢,我们呃是这么几个点啊,其实整体卡夫卡来讲啊,我们就从三个方面来去。这个这个理解它就行了啊,第一个方面就是这个topic方面。理解吧,就是你这个topic的方面啊,然后呢,第二个方面就是你的这个叫做生产者方面。
12:04
啊,生产者,再一个是你的这个消费者,OK吧,想挨个来梳理啊,Topic里面的话呢,我们重点是关心这么几个啊,就是topic的一个维护啊,就是topic的一个这个这个维护是怎么维护的。是吧?就是交给谁去维护,那这里面你会涉及到什么,涉及到你的什么blocker对吧,涉及到什么呀,涉及到他的什么分区啊,来我就挨个梳理一下啊。有什么呀,有你的这个blocker好,有什么呀,有这个分区对吧,有什么有这个副本好,那你有了副本以后,你就会引出来另外一个概念叫leader和follower。对吧。他们怎么选举的?是不是,那这个block也是一样的,它的这个有了block以后,你就会有一个概念叫做controller controller怎么选举的?
13:09
对不对啊,这是你这个topic的啊,然后呢,这是我们理论的东西,然后再来一个就是你的topic的操作啊,就是我们的这个命令行操作,就是你的这个命令操作。对吧,啊,这个我告诉你啊,它重点是用这个东西,就是叫做卡不卡杠topic加SH。好,那么至于它里面的,比如说诶你的这个怎么去操作。对吧,你的delete怎么去操作,呃,你的这个什么list怎么操作,你的describe怎么去操作。对吧,你就什么自己去想想啊,这个东西是怎么操作的。啊,这是我们从这个topic这个层面,你要去这个掌握的东西。OK啊,然后下面是生产者啊,这个生产者的话呢,这个东西会多一些啊,首先啊,其实也没有那么多啊,第一个就是生产者的什么呀,生产方式。
14:10
好吧,就我的生产方式是什么样子的,我是呃异步发送还是这个同步发送。对吧,啊简单一点吧,叫这个发送方式好吧,发送方式。我是异步发送还是同步发送啊,这里面我们涉及到一个什么异步和同步啊,当然这个异步是什么情况,同步是什么情况,你自己去梳理。OK吧啊,你自己去看,如果说你看到这个异步,看到同步了,你心里面根本就没有任何印象,说这个哦,还有这个概念呢,那你就下去以后你就去看吧,这一定是你这个遗漏的点了。好吧,一定是你这个遗漏的点啊,OK。然后呢,呃,发送方式,再一个是这个就是数据的什么呀,数据是什么可靠性保障啊,可靠性保障,那我数据发出去以后,我怎么就知道我这个收到数据还是没有收到数据啊,对吧,这里面涉及到一个点叫做A。
15:10
OK吧,A的级别,那这个级别的话呢,我们有这个零对吧,有这个。呃,有什么有有这个叫什么来着,嗯。一是吧,还有一个负一吧,我记得是。是不是?对吧,这个我我我得明确一下啊。我得明确一下啊,不能这个给你写错了是吧。嗯,这还没访问出来啊。好,稍等一下啊,我查一下啊。你看吧,这个好久不看,就是你也确实会忘哈,但忘归忘,你必须得有这个印象才行啊。Acks啊AKS好在这啊零一和负一啊,负一就是二对吧,那我记得没问题啊,负一就是二好吧,就是零是什么情况一什么情况,负一什么情况,你自己去看。
16:10
好吧,这是我们这个数据可靠性保障啊,然后呢,再一个啊,什么东西呢,生产者里面有一个非常非常关键的东西叫做。分区策略。这个是非常关键的,你使用卡夫卡绝对会涉及到它,那么这个分区策略里面的话呢,我们重点是这么几个点啊,第一个就是它有几种分区的方式。对吧,几种这个分区的方式啊呃,那我们有什么指定指定什么指定分区号,对吧,指定分区号是什么情况,然后呢,这个指定key是什么情况。指定key对吧?啊,其实这个我已经跟你说的很明确了,对不对,再一个什么就是。卡木尔的那个什么叫什么粘性分居啊,粘性分居策略。对不对。
17:01
啊,这都是你们要去看的。好吧,都是秒去看的啊行,然后呢,呃,再一个啊,就是它的这个,嗯,生产流程啊,消息发送流程对吧,他怎么发的啊,这个你们也得去看。就经过了什么,比如经过了什么。呃,叫什么序列化器。对吧,过滤器,过滤器序列化器,然后什么分区器,然后呢,发到什么缓冲区之后呢,再把它什么发到什么磁盘中啊这个消息发送流程你自己去看一下。OK吧,啊,这就是个生产者里面啊,大家这个需要去关注的点啊。好,然后呢,下面是我们这个消费者啊,消费者的话有这么几个点啊,就是第一个还是你的消费方式啊,就是消费方式。呃,这个消费方式的话呢,主要说的是什么啊,就是就是你这个分区,分区和消费者的一个什么对应关系,比如说我有几个分区,我有几个消费者,我们在消费的时候,我们的对应关系是什么。
18:06
呃,你的一个分区可以被多个消费者消费吗?或者说我的一个消费者可不可以消费多个分区对吧?哎,这些东西你都把它搞得清清楚楚的啊同学们。嗯,来答案我不告诉你啊,自己去总结去啊行。嗯,然后呢,这里面啊,消费消费者的话呢,我们也得有一个叫做什么叫做这个分区策略啊,对吧。它也有一个这个分区策略啊,这个分区策略叫什么呢?有一个叫做嗯,Range对吧,一个叫做red Robin。对吧,还有一个也是粘性的啊,对吧,粘性分居策略啊。这你们还有印象吗?啊,我估计应该没了是吧,下去看吧,是什么情况,Runin什么情况,粘性又什么什么什么情况。
19:01
对吧,自己去看一下啊,好,再往后消费者里面还有一个很重要的东西就是opposite维护,对,就是opposite相关的啊,这个opposite相关的话呢,我提两个点,一个是opposite的一个重置问题,一个是这个opposite的一个。呃,叫提交问题。对吧,这个重置就是。你要明白什么时候会重置啊,同学们。对吧,就是一个重置的情况,以及什么重置的选项,就是我可以重置成什么,就什么情况下我会重置,那我重置的时候呢,我会重置到什么地方。对吧,这个其实在讲项目的时候,我又给你说了一遍,好吧,下去以后自己看下啊,然后下面是这个off提交,这个off outside提交的话,我们又有这个两种方式,就是你的自动提交和什么呀,手动提交。
20:03
自动提交怎么提交?手动提交又怎么提交?以及啊呃,再一个吧。哎,你当时给我上来呀。嗯。来。的维护的信息。对吧,这个我就再跟你说一下,我之前说过啊GP啊。是不是?啥叫GDD?自己想想。好吧,自己想想啊,OK,行,那这是我这个off相关的东西啊。OK,然后呢,这个说到offset了,那就涉及到这个提交了,那涉及到提交以后呢,这里面啊,消费者一定要考虑一个问题就是。消费问题,什么消费问题呢?两个嗯,错了啊两个,呃,一个是重复消费。
21:13
一个是漏消费。啊,就怎么造成的重复消费,怎么造成的漏消费这个事琢磨琢磨。对吧,来这就是我们卡夫卡中啊,大家这个需要去关注的一些点啊,我把这个比较关键的,比较重要的东西给你梳理出来,下去以后自己去看去。OK吧,那么你们需要做什么事情呢?你们需要做的事情是这样子的啊,就是自己上面怎么写来着,上面是自己补充是吧?嗯。啊,自己补充就是每个知识点的什么知识点的这个细节啊,对吧,我只是给你列了个大概啊,你补充一下这个细节,然后呢,一定要注意啊,一定一定要结合下你的项目去说在项目中的使用场景。
22:05
就比如说诶重复消费乐消费,诶我在我的项目中什么地方遇到过。我是怎么解决的?对吧,这个才能够表示我确确实实用过卡不卡,而且而且我也知道怎么去用它,我用的很明白。对吧,我敢用它,出现问题我能解决。明白吧?好,这个下去我仔细看啊。行,呃,来听一下。
我来说两句