00:00
呃,来吧,各位同学,那现在呢,我们再来看一下这个业务数据,我们应当如何去准备?呃,业务数据这边呢,呃,按照我们刚才的规划呢,它里边是存在历史数据的,对吧?啊,也就是数据库里边是存在历史数据的,那所以说我们现在当然假定当前的日期是不是应该就是14号啊,对吧?那就是现在呢,我们的数据库里边应该会有14号的数据,以及是不是前边一系列的数据啊对吧?那在这儿呢,我们是准备几天的历史数据呢?我们就准备从6月10号到6月14号这五天的历史数据,OK,那所以接下来呢,咱们得先在买circleq数据库当中,是不是生成这样的五天的历史数据啊,对吧?好,那现在咱们去生成一下,当然各位同学,大家在买CQ当中应该已经有很多数据了,对吧,那我们需要去清空在重新,呃,需要去清空嘛,不需要清空,为啥?因为我们是不是那个模拟器里边带有那个清空的功能啊,对吧?你不要去手动的清空,必须得使用那个呃,脚本自带的清空的功能啊好,那现在呢,我们去找一下啊,找一下我们那个业务数据的模拟器,我们进到OT进到model进。
01:00
啊,是不是应该是DB log呀,对吧?进来之后各位同学我们看一下这里边是不是有一个application点诶proper文件啊,对吧,你给它打开,打开之后呢,各位同学,我们这里边需要调整的参数不多,那只需要改哪就行,改这几个参就行了,其余的参数其实大家之前都通过了,对,是不是通道已经通了呀,对吧,应该是没问题的,我们就不用管了啊,咱们重点改一下这几个参数就行了,这几个参数分别是啥呢?首先第一个就是mo.date啊,那这块呢,是不是我们第一天要生成的数据应该是哪一天的,应该是十号的对吧?大家注意啊,就我们这个数据呢,你一定要按照这个时间的先后数据去生成,不要先生成14再乘成11,为啥?因为咱这个数据啊,我们每一天的数据跟前一天的数据都是有前后的联系的,是什么意思啊?比如说我十号的数据,我可能会生成一个下单的操作,那到了第二天呢,我会生成一个同一个订单的支付操作,能理解咱们前后是有联系的啊,你这个不要啊,这个反着来啊,得先成了十号的,OK,那我们第一天就是十号,那就把十写上,但是往下走,下边这俩参数是干啥用的?
02:00
mo.clear clear是不是就是清工的意思啊,对吧?那这俩参数如果我们给它置为一,那它就会在生成本次数据之前,把数据库当中原有的这个业务数据给清理掉啊对吧?它自动清理咱不用管啊,其实说白了就也是删除啊,让让他删就行了,咱不用手动的删啊好,那完之后呢,呃,一共两个参数,这个mo.clear是清空什么数据的呢?是清空,比如什么下单呀,加购啊啊,还有什么支付啊,退单呀,退款是清空这些就是业务过程所对应的表的啊,是这样的啊好,那我这往下走,那这儿是不是还有一个mo.clear user啊对吧,这个是清货材料,就是用户表的,OK,那我们现在生成第一天数据的时候,是不是一定要把前面所有的历史数据全部清除掉,对吧?所以在这儿呢,我们第一天把这个值为一,那一会儿我们生成第二天的时候还要值为一嘛,就不要了,我是不是得置为零了呀,对吧,我就得保留十号的数据,哎,是这样,这个一定要要注意一下啊好,第一天值为一就完事了,我们shift s内那之后呢,在这我们是不是执行一个Java。
03:00
啊,这杠这儿啊,来来一个这,然后后边加上这个炸包直接回车啊,那这时候他应该就会呃,开始清理咱们原有的数据,并且往里边写入十号的数据了,好,那有没有写成功呢?咱们去检查一下啊来,我打开这个买搜的客户端,找到jama数据库,找到表,那咱们找一个跟时间相关的表,比如说car联。大家看啊,CAR0里边有没有生成十号的这个购物车呢?有对吧?哎,那就说明咱们这儿的这个十号的数据已经搞定了,那接下来咱继续往下走,那下面呢,我们还得按照相同的操作的去生成我们11~14的数据来打开这个文件,那这时候我们得怎么改,首先日期这边呢,我们给它改成11,那下边这儿呢,是不是都得改成零嘛,对吧,这个不要再都是一了啊,改成零,那之后呢,Shift CC,那之后再执行加va放这,那这个操作我们得重复几遍啊,稍微等一下啊,那这个完成完成之后呢,再打开文件,那这时候我们现在是是不是就只需要改这个日期就完事了,对吧?改成12,然后再shift z,那之后呢,我们加杠这。好呃,来等一会儿啊,等一会儿那行完成完成之后呢,我们打开它之后呢,在这呢,我们再来一个十几,再来一个13啊,然后shift z之后呢,我们加入到这。
04:12
等一会儿,嗯,来再打开这个文件,那之后呢,是不是只剩下最后一天了,对吧,我们再来一个14,然后呢,十分Z,那之后呢,加往这那就完事了,好了,有同学那截止到现在呢,诶,关型数据库当中的历史数据,咱们就算是给它创建完毕了,对吧?创建完毕之后,咱接下来需要干啥呢?是不是需要去做一下这个数据的同步啊对吧?我们现在仅仅是把这些历史数据是不是写到了呃,MYL当中啊,对吧?那咱接下来是不是得把这些数据同步到HTSS对吧?好,那现在问题来了,那咱们再去同步业务数据的时候,我们是不是得区分一下全量和增量同步啊,没问题吧,因为咱们有的边采用的权利,有的人是增量嘛,对吧,那现在咱们得分开做,我们现在先做谁先做全量同步,OK,那大家还记不记得我们那些全量表之前是怎么同步的,都是用data叉对吧?完了之后我们是不是把那个data叉的同步命令是不是写到了一个shell脚本当中啊,对吧?所以说我现在要想做全力同步,是不是只需要把那个LL脚本执行一下,那就完事了,对不对,这个其实比较简单啊,所以接下来呢,咱们去找一下。
05:12
是那个下L脚本,大家还记得是那个脚本吗?是不是就那个什么my circle to h FS负点SH啊对吧?OK,那咱们现在用它就行,OK,那现在我们去找一下那个脚本啊来,我们现在进到它进到这个并目录并论里边呢,咱们有一个应该是my circlel到HDFS负这个是不是就是my circlel到HTS全量本同步脚本啊对吧?这个脚本怎么用,还记得吗?呃,是不是给他传俩参数啊对吧?第一个参数是表名,第二参数是日期对不对?那这个表名呢,我可以传单个的表名,也可以传一个奥,奥代表的是所有表,对吧?那咱现在呢,就是所有表,那后边来说不是还得传一个日期啊,对吧?那我们现在假定当前的日期是哪一天来着,2020-0114对不对,那所以这部分数据咱们是不是统一了,都给他写到2020杠零六杠幺四,那就完事了呀,对吧?好,那现在我们就直接这个回车,好,那这时候呢,我们可能需要稍微的等一会儿啊呃,他需要把这个十几张表是不是都传到HTS上了,对吧?呃,那这个呢,我们暂时就先呃不过多的这个等待他了,我先把这个视频。
06:12
给他呃,暂停一下啊嗯,好了,各位同学,那花了一点时间,那咱这个15张全量表的数据应该就已经都同步到了HDS上了,然后呢,我们会发现在这个路径下是不是出现了我们这样的呃,几个以负作为后缀的这个路径啊对吧?表明它是全量表,好那完之后呢,我们点进去看一下,那当前咱这是不是出现了一个14号的一个路径啊对吧?好,那完之后呢,大家都知道啊,那我们现在假定当前的日期是14,所以我们是不是只同步14号的数据啊,对吧?那等到了第二天15号之后呢,是不是这还会出现15,在后边说还可能会说十六十七啊对吧?诶这一点大家给他理解一下就行了啊好了,那全量表的数据我们到目前为止就开始准备好了,来,视频我停一下。好好,各位同学,那现在呢,我们再来看一下最后一个环节,就是准备一下这个增量表的数据,OK,那增量表的数据呢,它呃跟我们这个全量表不一样啊,就是全量表我每天做的是不是都是全量对吧?那增量表呢,有一个特殊之处,什么什么特殊之来着,是不是就是所有的增量表我第一天做的是全量同步对吧?我后续每一天做的是不是才是增量同步对吧?OK,那完之后咱们回忆一下第一天的全量同步我们是怎么做的来着。
07:25
是使用Maxwell的BOO那个功能去做的,对吧?哎,这个一定要注意一下啊,OK,好,那么这个后边的增量表呢,我们是就是真正的基于那个B浪去实施同步的,对吧?哎,这是首日的增全量和每日的增量的一个,诶区别咱们要搞清楚,那现在咱们要做的这些增量表的同步,你说我们应该是全量还是增量。现在咱们要做增量还是全量,应该是全量吧,对不对,因为我们现在假定的是不是当前是14号,这是我们数仓运行的第一天呀,对吧,第一天我们是不是就要对应该对这些全量表做一个,呃,应该对这些增量表做一个全量同步了,对吧?哎,这是大家需要注意的,比如咱们当前只需要做一次全量同步就完事了,好,那现在回忆一下全量同步咱们需要去做哪些工作。
08:12
全做全量同步,我要不要去启动Maxwell卡夫卡和要不要全量图,要不要启动,还能想起来吗?也要启动啊,也要启动,就是大家都知道就是Maxwell对吧?它的这个呃,这个这个bootwap功能对不对,是不是也是需要去启动Maxwell进程的呀,对吧?这个一定要回忆起来,那也就是说我们首先需要怎么做呢?需要启动Maxwell,那然后呢,需要启动卡夫卡,需要启动这个flu,也就是说不管咱们这个增量表,我做的是全量还是还是这个增量对不对,那它的这个呃通道是不是都是一样的呀,对吧,走的都是这个通道完事,所以我们一会儿呢,得先把Maxwell提起来,卡不卡起起来,还有浮动起来,但是大家现在思考一个问题,我们现在只要把Maxwell提起来,那Maxwell就就就就会开始干什么,就会开始去同步咱们那个blog了吧。
09:09
能理解吧?诶那大家现在想一想啊,你说Maxwell他现在去同步blog,它从blog的什么位置开始同步啊,我为什么要问这样的一个问题呢?因为大家应该能想到啊,就是我们之前采集项目的时候,对吧,我们那个Maxwell它是不是肯定是同步到了blo的某个位置啊,对吧?然后过了这么长时间,咱们一直没用,但是我们刚才又做了一个什么操作,我们又往买so当中是不是去,呃做了很多的操作呀,对吧?首先我们做了一个什么操作,就是清空原来的数据,对吧,先清空,那清空会生成什会生成什么样的操作,是不是会产成几类的操作,对不对?然后呢,我们又往里边新生成了什么,十,11 12 13 14,是不是又生成这样一系列的数据啊,对吧,也就是我们刚刚又对my circle进行了一系列的变更操作,那这些变更操作是不是都会往blo里边写入相应的内容,对不对,也就是说我们现在呢,Blog较之前相比说发生变化来对吧?好,那现在问题来了,你说max,咱们现在把它提起来,它是从。
10:09
原来他消费,或者他原来同步到那个位置继续消费,还是说直接从咱们现在这个blo最新的位置开始消费,从哪开始,其实原来那个位置为什么这么说啊,因为Maxwell它是支持什么的呀,断点续传的,哎,这个咱们从哪能够看出来呢?实际上呢,Maxwell咱们在部署的时候给他准备了一个那个原数据库,大家还记得吧,就是在ma当中,我们给Maxwell是不是创建了一个数据库啊,对吧?来,咱们现在找到这个数据库就是Maxwell,对吧,里边有一张表非常关键,叫做positions,大家来看一下这个position当中存储的就是什么呢?就是它当就是呃,就是它同步到的那个blog的那个那个那个位置对不对,那你注意观察,他现在同步的这个blog位置是哪是呃三六什么37663对吧,是那个位置对吧?OK好,那完了之后,我们现在这个买S当中blog的最新位置是多少呢。
11:02
这个你要想看,你可以怎么看啊,你可以这么去看啊,你可以在我们的MYSQL当中去执行一个命令去查看,比如在这儿呢,我进到MYSQL的一个客户端,MYSQL-U,然后呢来一个入,然后杠P,我这呢是六个零,咱们进来,呃,这个少写一个零啊,来进来,进来之后呢,我们执行一个这样的语句就行了,什么语句呢,叫做show master status啊,这个所谓的master指的是什么意思呢?大家都知道,就是我们mawell,它底层的原理是什么?还记得吗?是ma的主从复制对吧?实际上MYL是把自己说当做了一个从服务器啊,对吧?那现在咱们这个MYL是主对吧?我现在就可以执行一个受master s,就是查看我这个主的状态,这个主的状态当中呢,就会把我们这个主的blog的最新位置给打出来,大家来看,那这个主的blog最新位置是多少,是三二多少对吧?OK,这个三二多少,那刚才那个是多少。是三六多少,诶理论上应该是哪边在前哪边在后,理论应该是max,这个Maxwell它的上一个位置是不是应该是在,呃,应该是比较小对吧,然后这里边买C的位置,最新位置是不是应该是比较大才行,现在好像反过来了对吧。
12:12
哎,这是为啥?注意观察观察那个文件名不是一个文件对吧?这是多少,这是0001对吧,我这个是多少已经到五了啊,就是啥意思啊,实际上呢,这个blo呢,它也不是说只有一个文件,它也会滚动对吧?OK,那我最开始是0001对吧,那完了之后呢,达到一定的大小之后呢,我就会生成一个新的文件0002对不对,那现在这儿已经到五了对吧?但是我这个哪我我谁我这个Maxwell它记录的还是几呢?还是一呢,对不对?那所以说你现在只要把这个maxl启动起来,那Maxwell就开始从哪了,是不是得从一这个文件的这个位置开始同步了呀,对吧?好OK,那现在问题就来了,你说我们能让他从这个位置去同步吗?不能,为什么你要让他从这个位置去同步,那相当于他会把哪些操作都同步过去,把我们刚才删除数据的操作生成11,十十二等等,生成这些历史数据的操作是不是都给我们同步到这个,呃,这个HD面去啊,对吧,那这个我们显然不能让他去去。
13:14
做啊OK,那我怎样做他就不去同步了呢。怎样做就就就不去同步了呢,其实很简单,我们来这儿可以这样去做一下,怎么做呢?我们可以把这个断点记录是不是给它清理一下啊,对吧,我清理一下之后,那它就可以怎么样了,诶,那Maxwell的默认就会从blo的最新位置开始消费了啊,是这样的啊,所以说在这儿呢,我们去做这个增量表的首日全量同布之前,在启动Maxwell之前,一定要先把Maxwell的这个断点记录清除,那怎么清除呢?其实很简单诶,我们只需要去把这个Maxwell当中的,把这个原数据库里边的所有的表都给它删除就完事了,这个表都删了,你不要只只删这一个,只删一个可能会有问题,咱就把所有表都删了,相当于把它的数据是不是清理掉了呀,对吧,那清理掉之后,你一会儿再启maxll,相当于是不是重装了一下mall对吧,那默认就从最新位置了,OK,那在这儿呢,咱们把这个数据呢,给它清理一下啊,那首先在这我们呃这个当然呢,你你怎么删都行啊,我这准备了删表语句了,或者说在这儿呢,你也可以用这个可视化的这个呃客户端去删,你找到这个库,然后呢,找到这个对象,这边呢是能够选中的。
14:18
选中之后呢,在这儿是不是有一个删除表啊,对吧,然后点击删除表,注意啊,你这只删表就行了,不要把库也删了,你要把库删了是为了库,我们得自己建呀,对吧,就麻烦了,你还得自己建库啊,这个表上当库不要删行了,那现在断点记录咱们相当于就已经清除掉了,清除掉之后咱们接下来干啥?是不是就可以准备去启动Maxwell加卡夫卡加那个通道了呀,对吧?OK,好,那现在咱们就开始往前行,那当然了,在启动Maxwell之前,我们还有一件要做,就是需要去修改一下谁修改Maxwell配置文件当中的那个moda的参数吧,对吧?诶大家还记不记得这个参数的作用是什么,这个客户端我对一下啊,所以说对完之后我们进到OBD,进到这个model,进到这个Maxwell,那进来之后呢,这有一个配置文件叫con,里边有一个这样的参数,对吧?大家还记不记得这个参数的作用。
15:08
还记不记得,可能很多同学已经忘记了哈,首先需要给大家明确的一点是什么呢?这个参数是Maxwell原生自带的参数吗?并不是这个参数我加上的啊,这是我之前改了一下mal的源码,然后增加了这样的一个参数啊,我为什么在这儿我要加上这样的一个参数呢?呃,来这个我需要给大家解释一下啊,首先需要给大家明确的一点是什么呢?就是大家都知道就是Maxwell呢,它会去同步blog,然后呢,是不是会把每一个变更变更操作都用一个杰森字符串这样的一个格式给输出啊,对吧?那那个杰森字符串当中,哎,它有两个非常关键的字段,一个是type type,还有一个是非常重要的参数叫什么,对吧?Type是指这个变更操作的类型,Insert update delete对吧?指的是什么?大家还还记得吗?是我这个操作发生的时间对吧?Inser你什么时候inser的,Update什么时候update的,然后呢,Delete什么时候delete是你这个操作发生的时间对吧?OK啊那嗯,原生的这个。
16:09
知道呢,这个TS它它对应的值就是什么,就是我这个操作真实的发生时间,那真实的发生时间是什么呢?是不是就是刚才我们往这个数据库里边模拟生成数据的时间呀,对吧?那比如说我现在呢,是呃,2022年3月2号往里边写的数据,对吧?那我们生成的那个变更操作里边的TS是不是都是22022022年3月2号,对吧?是这样的,但是实际情况下呢,咱们得搞清楚一个问题,什么问题,就是说理论上我这个变更操作TS它应该跟谁是一致的呢?应该跟我们的买三和数据库当中那些数据的业务时间应该是一致的吧,对不对?比如举个例子啊,那咱们随便找一个,比如说我们找谁呢?打开这个我们的JA贸数据库,然后呢,找一个order INF for啊呃,Older for在这呢?Order in for当中,我们这儿会有一个什么时间呢?会有一个create time对吧?Cur time在这呢?指的是什么时间,指的是下单时间,对吧?没问题吧?OK,那我这条记录它insert的那个TS时间是不是理论上应该跟这个呃,对应的cur time应该是差不多的呀,对吧?没问题吧,理论上他俩应该是基本一致的,但是如果我们现在就用原生的Maxwell去来去同步这个数据,那就可能会出现什么问题呢?诶,我这个变更操作当中的TS跟我们这个表中当当中的这个业务时间是不是不对应啊,对吧?啊,这个不满足真实情况,所以在这儿呢,我就修改了一下Maxwell的源码,我加上了一个这样的参数,那这个参数就能管什么呢?它就能够管我们那个Maxwell输出的数据当中的那个时间,你这。
17:39
写14,那它生成的那个时间窗就是14号的一个时间串,你这写15,那那个TS就是15号的时间串,也就这个TS,我我现在没有让他拿那个真正的变更时间,让他拿的是咱们这配置的这个参数时间,诶这个大家理解一下就行了啊好,那这个完成之后呢,大家就按照要求去改一下就完事了,在这儿呢,由于我们是第一天,所以在这儿我们就改成零六杠幺四,那就完事了,那这完成之后我们shift内,好,那下来呢,我们就继续往下进行,各位同学啊,那这个完成之后,咱们接下来需要做一个什么操作呢?我们需要去启动咱们这个增量表的数据通道,对吧?咱们给它启动一下就完事了。好,那启动完之后呢,我们首先需要先起mawell,再起卡卡不卡,是不是刚才已经启来呀,对吧,然后再起flu就完事了,我们只要只需要去起一个卡夫卡,那卡夫卡咱们应该是有一个脚本的,我们应该叫做MXw.SH对吧,X点的好GPS。
18:28
麦没起来,已经起来了,对吧?好,那接下来呢,我们再去起一下那个,那这个咱们用哪个脚本管它来着,F3对吧,来一个start,诶直接回车好了,那现在呢,我们这个基本上就都已经起来了,那看一下104这边这个辅助是不是应该是俩,这有两个application对吧?哪个是咱们日志,哪个是业务数据的辅助,这个能看出来吗?呃,这个其实你能你你得这么去看啊,你这儿可以执行一个GPS杠,什么杠ML啊,它是能传三的ML呢,你是能够呃去看到这个进程的更多的信息的啊来现在大家能不能区分出来哪个是日志,哪个是业务啊。
19:05
显然这个是咱们之前那个日志吧,你看这个配置文件是不是能看出来对吧?这是咱们那个DB的,这是,诶,这是业务数据,这是那个日志吧,对吧?啊,应该是能看出来的啊,就是看这个命令稍微再记一下好了,有同学,那这样一来的话呢,我们的通道就准备好了,接下来咱就可以开始干啥,开始做那个增量表的首日全量同步了,对吧?增量表的首日全量图,咱们当时是不是写了一个脚本对不对?OK,那脚本在哪?也在B目录里边吧,对吧?我们进到这个bin,那之后呢,我们找一下这个脚本,这个脚本它应该叫什么名字来着,也叫my to哪对吧,To to哪是不是to卡夫卡呀,对吧,然后是INC,那这边呢,我们只需要给他传一个参数就行,传什么参数就行了,是不是传一个啊哦,那就完事了,对吧,那这个呢,是不需要去传日期的,那这个呢,我们直接回车,那就完事了,走。好在这时候呢,那其实这个Maxwell BOO呢,就会从我们的MAS当中去读取这些增量表的,哎,全部数据是不是写到我们的HDFS对吧?然后要记住啊,Maxwell的增量这个首日全量同步,它它这个bootri功能也是基于什么的来着,基于查询吧,哎,实际查询的啊,这个要稍微的理解一下,所以我们现在实际上拿到的这个呃,数据呢,其实就跟买思科当中这一条一条的数据是不是一致的呀,对吧,因为它本身就是基于查询的嘛,好了,那这个已经执行完毕了,那如果没有问题的话呢,那在咱们的HDFS上边现在会出现什么,是不是会出现一大堆的这个INC作为后置的路径啊,对吧,那应该一共是多少?一共是13 13加上之前的15,应该是28对吧,这是没问题的,好,那现在我们随便找一个INC列表点进去,那之后这是不是会有一个14号的径啊,对吧?那之后呢,我们点进去,这里边会有一个GC文件来,好了,各位同学,那截止到现在增量表的数据咱们也就准备好了,然后呢,对于这个增量表的数据呢,我需要多说一句啊。
20:53
来大家思考一个问题,就是将来咱这个增量表的路径下边,我是不是也会出现一天一个路径,一天一个路径啊对吧?好,那对于增量表而言,那他第一天的这个路径下边存储的数据跟后续每一天存储的数据是一样的,肯定是不一样的,而且有很大的区别,对吧?那第一天的时候,那咱们这个数据是所谓的全量数据,对吧?这个全量是基于什么查询过来,这同步过来的,是基于查询同步过来的,就是相当于什么意思呢?就是我这个路径下边的数据就跟哪儿买S当中,现在呃,买S当中这张表的数据是完全一致的吧。
21:31
是是这个道理吧,因为是基于查询嘛,对吧,谁来的星装这张表,诶,就放在这个路线了,好,那到了第二天,比如说15号,那15号线号放的数据将来就是什么了,是不是应该就是买色当中,这张表在15号的变更操作了呀,对吧?哎,In inside update de delete OK,会放在15号的个路径下,哎,所以这块呢,大家一定要引起重视,就是增量表第一天的路径下跟后续每天放的数据有很大的区别,既然有区别,那将来咱们去处理这样的表的时候,那你第一天的处理逻辑跟后续每天的处理逻辑是不是应该加以区分呀,对吧,这个咱们到时候再说啊,行了,那个完成之后是不是停一下。
我来说两句