00:00
好,同学们,我们接下来给大家讲一下Spark新的模块叫Spark streaming,从这个名称上来看呀,大家会发现我们Spark呀,它准备在我们流数据当中啊,诶大展拳脚,咱们之前所学习的Spark circle Spark啊,它主要针对的都是一些离线数据的这种处理啊,但是呢,我们在流逝数据当中就要靠这个模块了,不过有的同学呢,他会对这些概念呢有疑问。比方说什么叫流失,什么叫做实时,什么叫做离线,什么叫做批量数据,对不对?这些概念呢,大家容易混淆,所以在给大家讲这个模块之前呢,我们先给大家讲一下这些概念,好吧,那么首先第一个咱们说一下,咱们叫做流式数据处理啊,那么这个流市呢,就是我们刚才看到的名字叫streaming对吧?诶就是streaming就是它了,那么还有一个呢,我们称之为叫批量啊,咱们叫批量啊数据处理,那么这个批量数据处理呢,我们一般其实叫批处理对吧,那叫批处理,这个我们写上啊它。
01:01
好了,除了这两个以外,还有一个呢,叫实时数据处理啊来咱们说一下,咱们叫实时数据处理,还有一个我们叫做离线啊数据处理,那么实时数据处理怎么去理解,离线数据怎么去理解呢?这个我们首先来讲一讲,那么所谓的实时和离线呢,我们一般呢,它表述的是什么呢?是数据处理延迟啊的一个长短啊,长短也就意味着咱们所谓的实时数据处理呢,它的那个数据延迟的范围,它是我们的毫秒级别啊,咱们叫毫秒级别。啊,咱们毫秒的级别就是啊,它的延迟比较短啊,比方说诶,我们当前要去做一个统计分析,可能不到500毫秒呢,这个结果就出来了,那么这种操作咱们就称之为叫实时数据处理,那么所谓的离线数据处理呢,它的这个级别呢,就在小时和天了啊,小时或者是那个天了啊,就是这样的,它是在这个级别上面啊,它在这个我们的级别上啊,那所以呢,对于我们来讲,你会发现所谓的这个实时和离线就是咱们数据处理延迟的一个范围,如果你的范围在毫秒级别,那么你就叫实时数据,那么如果你在小时和天的这个范围,那么就叫离线数据处理,那比方说诶,我们想统计去年一年的流水信息,这个时候当你点击按钮去做统计分析的时候,只要很快就得到结果了,比方说一秒钟之内就得到结果了,那这个咱们就叫实时数据分析,但是如果你点完以后,需要一小时或者一天的时间来做计算,对吧,那我们。
02:39
其实得到结果的时候,就是一天之前的那个计算结果,所以啊,这样的话,它就称之为叫离线数据分析,所以啊,这是从数据处理延迟的角度来考虑这个问题,分两种,一个叫实时,一个叫离线,那好接下来我们再说流市和批量,那么流市数据处理和批量数据他们是从什么角度呢?他们是从我们数据处理的方式,咱们叫数据处理的方式,这是什么意思呢?就是说我们所谓的这个叫流逝呢,它表述的是来一条,诶,处理一条,来一条处理一条,就跟水流一样,在源源不断的流入到我们管道当中,对不对?那么流来一点,我们要处理一点,来一点处理一点,这就叫流市数据处理了。那么我们的批量,我们说了叫批处理嘛,就是说来一条,它并不是马上做处理,它挤攒一批一块儿来做处理,对不对,咱们之前给大家讲过了。
03:33
在咱们数据处理当中,比方说我们IO当中,对不对?IO当中呢,它来一点放在缓冲区,来一点放在缓冲区,当缓冲区超过一定的阈值之后,它一块儿做处理,它的性能可以得到提高,对不对?诶,所以啊,这是我们处理数据的方式的不同,它的诶,我们的流逝和批量,所以啊,他们是截然不同的两个概念,不要混淆了,有的同学会把这个流逝和这个实时呢等同,其实是不一样的啊,那好了,咱们先把概念讲完之后,那咱们回过头来说,这个叫做Spark streaming,那么它是一个什么样的这种框架呢?首先我们先给大家说明白,咱们Spark streaming它也是基于Spark扣的,那么也就意味着对于我们来讲,它的底层核心是没有变的。同学们看来。
04:21
那现在呢,我们来打开啊,打开打开以后我们写上叫Spark streaming OK,放过来,放过来以后在这里我们给大家创建两个我们的小方块,一个咱们叫做driver啊,咱们叫driver,这里呢用一个我们的红色,然后呢,我们再来啊我们的executor,所以呢,我们写上咱们的executor,好,这个呢,我们来给它放上绿色好了,放过来,那么现在呢,我们的driver和我们的executor呢,他准备开始来做计算了,所以我们有箭头呢,来关联我们的两者啊,把他们的关系建立起来。好了,然后呢,再把这个地方放过来,好,那么咱们之前学过那个RDD呀,然后呢,RDD里面的分区会形成task,对不对,所以我们这里应该会有task,诶放过来啊,放过来咱们这里就不画那么细了,同学们,咱们这里就写上一个task,那么这个task呢,我们用一个紫色来表示啊,紫色来表示,那么这个task呢,就会发给我们这边,然后发给这边对不对,诶就是这样他们来做计算,那么大家想一想,那如果底层没有变的话,那咱们Spark streaming它能够一条来了马上做计算吗?
05:32
记住啊,它的底层可是那个RD,它的底层可是我们之前所学的driver和那个ecuor,那如果他如果来一条,你马上就做计算的情况下,大家想想,那是不是我们这个task里面就只有一条数据啊,对不对,诶里面只有一条数据,你的一条数据,比方说是个A啊,那么这个A就会发给我们的他对不对,问题来了,这边就没有。对不对,那你再来一条写个B,那么再给他,所以说你会发现呢,你这有点浪费资源了。
06:05
你那么多的节点,那么多的资源,比方说我们的三个CPU盒对吧,两个G的内存,可是你每一次才来一条,每一次来一条,这样的话会有大量的资源会闲置,那这样的话就会感觉不是很合适,所以啊,如果一条来一条来一来一条,诶当成一个RDD来一条当成个RDD来做操作时,我们的一因为它的底层能支持种,所以我们的这个SPA史罪它是没有办法真正的做到流失数据处理。诶老师那它不是流失,是不是批量呢,这个批量啊有一个问题,你这一批数据,那么这一批数据是多少呢?对不对,哎是多少呢。你要的太多的情况下,大家想想你的数据量越多,你的处理的时间的延迟是不是越大,大家能明白这个意思吗?就是你的数据量越多,你的处理时间肯定越长嘛,那的延迟就越长,对不对?那如果你要长的话,那么大家想想你跟这个离线又有什么区别呢?我们说了想要毫秒级别的,那么你数据量就不能太多,所以啊,咱们的SPA追命是没有办法真正的达到什么呢?咱们的这个毫秒级别的为什么呢?它不可能流逝,可是呢,他要是大批量的话,那又跟离线差不多,所以呢,那这个跟Spark circle Spark Co就没有区别了,所以咱们Spark追命又想在我们的流逝数据处理当中占有一席之地,但是又不能够它的延迟太长,那么就是离线了,所以啊,他就介于他们之中。
07:42
所以我们现在把这个概念稍微的说一下,就是说我们的SPA追命啊,同学们看啊来。Spark streaming其实是一个什么呢?它是一个我们叫准实时啊,咱们叫做准啊实时啊,然后呢,我们叫VV啊V批次啊,批次的流啊,咱们的数据处理框架。
08:07
那这个怎么理解呢?咱们叫准实时,就是它达不到真正的实时,为什么呢?因为这实时毫秒级别啊,那你这个就来一条处理一条,这个一般能达到,那你说我要一批数据,这一批数据你再少,它也也不能太少,对不对,那所以在这种情况下,它达不到真正的这个我们的诶实时,所以我们称之为叫准实时,但它又不能是离线,所以这个准实时呢,一般是以秒为单位啊,秒啊或分钟为单位,一般就是这样啊,分钟为单位,嗯,它的延迟在这个范围之内,然后呢,这个叫VP是什么意思呢?就是它是批量数据处理,但是这一批呢,不能太多,你太多的话,你连这个都达不到了,所以呢,它这个不能太多,那你不能太多的话,那我怎么来体现出这一批呢?所以呢,大家会发现这里应该有一个什么,诶时间的概念,比方说三秒钟,诶这个时候我计算一次三秒钟,计算一次三秒钟,你的数据量可能没有太多,对不对,诶并且呢,你的数据量不多的情况下,你的这个数据处理的延迟也比较。
09:08
短,所以这样的话就结合在一块儿啊,所以我们就把Spark streaming称之为叫准实时V批次的数据处理框架好不好,同学们先把这个概念咱们先搞明白了啊,搞明白之后咱们再来往下讲是OK的啊。
我来说两句