00:00
那组件呢,我们选完了,那组件选完之后,我们的数据应该如何在这些大数据组件之间来进行流转呢?好啊,接下来我们看一看系统数据流程的设计啊,打开之后啊,我们首先看到有业务数据以及用户行为数据,那其实啊,我们还有一个爬虫数据,只不过爬虫数据我们不做了啊,那在这呢,我们就不考虑了,那业务数据啊,我们通过业务服务器给他发送到MYSQ数据库当中了,那用户行为数据呢,我们通日志服务器打到日志服务器本地的一个文件当中,那这个日志服务器我部署在了哪台服务器,那么这个日志文件我就给它写到哪个服务器下面的一个文件当中,OK,那这个N这个丝它的作用是什么呢?哎,它在这的作用呀,是转发的作用,你比方说我们这块,哎,这一瞬间呢,有1万条数据,那这1万条数据,你说有没有可能全都打到这一个服务器下面了,诶有啊,那这个就会出现。
01:11
一个数据倾斜的这么一个状况,那这种情况很有可能啊,就把我们这一个服务器给压垮了,哎,那他呢,他是闲着呀,他什么都没干呢,那这个情况不好,那怎么办?我们通过N这个斯来进行请求转发,那N这个斯啊,它可以配置一个轮巡的错略,那你一条你一条,你一条你一条,哎轮询的这么一个策略啊,那最终这1万条数据啊,1万条数据,你5000条,哎,你5000条,他们两个干的活都一样啊,OK,那同理啊,下面的这个N这个词,它的作用也是请求转发好了,那现在数据已经到my circleq业务数据库以及日志文件当中了,那不管是业务数据还是用户行为数据,他们最终啊都是要拿到离线数仓,还有实时数仓来计算的,那我们如何把这两部分数据给它发送到离线数仓和实时数仓呢?好,首先我们来。
02:11
看一看用户行为数据,那他现在已经到日志文件了,那日志文件当中的数据啊,我们先分析啊,我们如何给他采集到离线输仓呢?也就是我们的哈杜呗,哎,HDFS,那日志文件当中的数据如何发送到HDFS的,诶这个我们是不是都会呀,我们可以用来做这个事儿,用把日志文件当中的数据给它发送到HDFS,但是那这个地方我们就得想了。那我们是做电商的呀,那既然是做电商,我们就要做活动,那既然有活动了数据啊,它就会出现激增的这么一个状态,那如果说数据一激增,我们呢,把这些数据通通的打到HDFS,那HDFS很有可能就被我们压垮,哎那这样不行,那啊它不能直接就对接我们的卡多普集群,哎他呢要先把数据给他发送到卡夫卡集群,做一个消峰的处理,发送到卡夫卡集群之后,然后我下面什么时候有时间,我再把卡夫卡集群的数据啊给你消费出来,那用什么消费啊,哎,我们也可以用来把这个数据给它拿出来,拿出来之后发送到我们的哈多普集群,好,那这个是我们的用户行为数据啊,我们给他发送到哈多贝集群了,也就是理想数仓,那业务数据呢?
03:43
我们如何给它发送到离线输仓啊,诶,业务数据在这个地方我们有两个链路啊,因为我们的业务数据它是分全量同步和增量同步的,那全量同步啊,我们就直接通过这个叉来全部的把数据发送到哈多be集群就完事了,那还有增量数据,那增量数据呢,我们通过max one,哎,把新增机变化的数据先给它同步到卡夫卡,那同步到了卡夫卡之后啊,我们再通过一个flow把业务的增量数据消费出来,发送到我们的哈多集群,发送到HDFS,那么到这儿我们的业务数据以及用户行为数据是不是就都发送到我们的哈多集群了呀,那发送到哈多集群之后,那接下来我们就可以进行数仓建模了,诶,离线数。
04:43
的建模,那关于离线输仓的建模,我们之前是不是也说过呀啊,分四层,第一层是ods啊,接下来DWDDWS啊,ADS,那每一层有什么作用啊,我们在这呢就不再说了,之前我们也说过了,好。
05:00
诶,那在这个地方还有一个层叫做dim层,什么意思呢?维度层啊,那这一层啊,它存储的数据量一般比较少,存储一些维度表的数据,OK,那么这个就是我们的一个离线数仓的建模啊好了,那最终啊指标是存储在ADS的,那存储在a eds层,老板跟我们要指标了。啊,那怎么办呢?你说我给老板一个circle语句啊,让老板拿着这个have circle,呃,去as层查呗,那老板肯定开了你啊,哎,老板根本就不懂circle啊,那怎么办呢?我们呢,要通过一个可视化的方式把这个数据查出来,那既然是通过可视化,那你说这个可视化它能直接从ADS层当中查询吗?那也不行,我直接从ADS层查的话,他慢呢,那从have当中查肯定慢,那老板得等半天,那也不太好。那怎么办呢?我们呢,可以先把ADS层的数据再次通过data差每日全量同步到MYSQL表当中,那同步到my circleq表当中,那接下来我们的可视化工具啊,直接从my circleq当中查询数据,那离线输仓的可视化我们用的是super set,哎,直接从my circle当中查询就OK了。
06:24
那最后啊,离线收仓我们还需要一个定时调度的工具啊,Do分schedule,把我们的任务以任务链的形式来进行一个串联,好,那离线输仓我们到这儿来就完事了啊,这是离线输仓的一个架构,那除了离线数仓,我们还要有一个实时数仓,那实时数仓我们是用什么来计算的呀?哎,用flink来计算,那既然是用flink来计算,你说这个用户行为数据。以及业务数据,那我们如何来获取啊,那我直接从MYSQL查,再从文件当中查吗?哎,其实不用,那我们呢,再次分析一下之前那个架构啊,你看那不管是日志文件当中的用户行为数据,还是买circleq的业务数据,是不是都已经发送到卡夫卡当中了呀,那都汇总到了卡夫卡当中了,那我是不是就直接可以从卡夫卡当中拿数据呀,我的令直接从卡夫卡当中拿数据,哎,是可以的,那么卡夫卡的第二个作用在这就体现出来了啊,解耦,哎,这是奇偶,之前呢是消峰,那现在呢,第二个作用传来了,解耦,那也就是说我们的实时数仓也好,还是离线数仓也好,它直接可以从卡夫卡集群当中拿数据,那比方说我们接下来可能还会有一些机器学习呀,还有一些其他的平台呀,那他们依然可以从卡夫卡集群当中。
07:54
拿数据啊,OK。那我们来到实时数仓啊,我们看一看,那实时数仓我们也要进行建模啊啊。
08:03
那实时仓我们也是有这么几层啊,Ods层DMDWDDWS,好,那首先我们来看看呗,Ods层应该在哪呢?那弗林它是直接可以从卡夫卡当中拿数据的,那么我们就直接呀,把ods层放到卡法集群当中,那我们的用户行为数据啊。肯定是存储在卡夫卡的一个topic当中,那么实时数仓的ods层就是卡夫卡的一个topic,好了,那弗林他把ods层的数据给消费出来之后,我们要进行一个数据清洗啊,那清洗完之后我们还要维护一个DWD层,那DWD层我们依然是存储在卡夫卡的一个top当中,哎,存储的另一个top当中了啊好,那这个是ods层和DWD层,那同时我们实时出仓了,也有一个维度层存储一些维度表的,那维度层我们就给它用h base来存储了,OK,那维度层可能有一些数据呢,我们要进行去重,那去重我们是通过red旁路缓存来进行驱重的,OK,那接下来我们的fli它需要维度层数据的时候,那就直接从h base和red当中。
09:29
中来进行查询维度层的数据,哎,那就完事了,那最终啊,我们要进行计算呢,要进行计算我们就来一个DWS层进行一个数据的汇总啊汇总层。那数据的汇总我们用的是可Li house来进行存储的,那Li呢,它把数据又给它写入到可Li house当中,那我们的指标最终怎么计算呢?哎,我们就直接从可Li克house当中来进行计算,好,那最终计算的这个结果我们也是要展示出来的啊,通过一个可视化的平台展示出来,那这个我们应该如何来展示呢?我们要通过一个spring BOO的这么一个外部服务啊,Spring boot它是一个Java的外部服务,然后调用click house,它暴露的一个接口,把我们所需要的指标,诶查询出来啊,聚合出来,聚合出来之后呢,我们通过sugar一个实时的可视化的这么一个工具啊,那就展示出来了,诶这个就是我们实时数仓的一个。
10:44
啊架构啊,OK,那么这个就是我们整个的系统数据的一个流程图,OK,那到这儿我暂停一下。
我来说两句