00:00
来咱们打开这个data gra吧,啊来到这儿来了之后呢,我现在是不是要去建一个这个数据库啊,那个so该怎么敲怎么敲,是不是就是直接怎么做,是不是create这个date with,然后呢,我们起名叫季贸啊,然后大家要注意的是啊,我们在使用那个呃,这个data gra的时候呢,咱们需要去注意一个事儿啊,就是你这个库建完之后,通常情况下你需要怎么是不需要use它呀,Use它一下对不对,那你在have客户端里边那个黑窗口里边直接use就行,那你在这块怎么怎么怎么去选中这个数据库呢。诶,这个位置这是不是有一个这个可视化的一个图形啊,你点它,然后选到那个集贸就可以了,咱们先把它创建出来啊走。是不是有output已经创建完毕,那这时候呢,咱们点这这是不是出现集贸了呀,那就是咱们点击集贸啊,那大家以后写so的时候呢,要注意观察一下啊,你看看是不是在集贸库下边,你别建到default库里边去啊啊这个库咱们就啊建完了啊很简单,那剩下我们一会呢,就开始从ods层开始去搭建了啊但是在这个搭建数仓之前说一下咱们这个,呃,我们这个开发的一个流程啊,开发流程我一般情况下,我们这个数据仓库,咱们开发的流程是什么样的呀?哎,咱们呢,一般情况下啊,先以一天的数据为例啊,我就先怎么算啊,先拿一天的数据,因为我们数仓是不是离销数仓啊,对吧,我们去计算的时候,是不是都是一天一天的算啊,虽然每天都要算,但是大家都知道每天其实都是一样的吧,所以说我们一般情况下是先以一天的数据为例啊,然后呢,去从头到尾把这个一整套流程是不是给它开发出来呀,对不对,那开发出来之后呢,我们就可以把这些任务呢,都封装到这个脚本当中,然后呢,让他每日定时调度就可以了,是。
01:40
这样的啊,那所以说咱们现在要想做这个整个完整收藏的开发,所以咱现在需要需要做什么事啊,所以需要需要先准备一天的数据啊,对不对,咱需要先准备一天的数据,然后作为我们的这个呃样例数据,然后咱们以它为例去开发啊,那所以说现在我们需要准备一天的数据,那准备这个数据咱们得用谁啊。
02:00
是不是得用采集项目啊,对不对,咱得用采集项目,当初咱们写的那些脚本啊,咱们得去造点数据,再造一天的数据啊,那之前咱们做采集项目的时候呢,已经往HDFS上边是不是已经传过一部分数据了呀,S102,然后呢,呃9870啊,咱们去看一下。找到啊这个日志文件啊,点开,然后找到original a data是吧?啊在这里边啊集贸,然后呢,我们两个类,一类是日志,日志呢我们当时导了一个这个5月10号的,当时我给大家演示出那个日期,我多写了一个小时,对不对啊,这个这个日期还不对着呢啊那然后往上翻,上面有个DB,那DB呢,我们导的是哪天,咱们导的是5月15号的,你会发现咱们这个当时只是把数据扔上来,但是这个日期并不统一,对不对,那这个没有没有办法用啊,我们要想啊去做这个,呃,数仓开发呢,咱们这个准备的一天数据必须得是同一天的啊,因为咱们其实导数据的时候,我们分不同的来源,但其实到了出仓之后呢,我们这个数据呢,最终都会汇总到一起的,所以说这两边日期我们要求保持一致啊,那所以这时候呢,我们再重新把数据再造一下啊,咱们统一一下,统一造一天的数据啊,造哪天都可以,你造今天的就行啊,或者说咱们文档上都是以哪一天为例呢?文档上都是以6月14号为例。
03:20
期的啊,那咱们可以跟他保持一致,保持一致有什么好处啊,这个circle是不是可以直接粘过来就不用改日期了,对吧?啊,咱们跟他保持一致吧,啊保持一致,那我们现在呢,就呃给大家再重新演示一下如何使用我们这个采集项目呢?呃去呃,重新生成6月14号这一天的数据啊,咱们统一一下吧,都用这月14号,当然你不统一也行,你们自己自己自愿啊,自愿就行好,那咱们要造这个数据的话呢,我们呃分呃两个部分去造啊,一个是日志,一个是业务,对吧?那咱们先造日志数据吧,先造日志数据,我们造这个日志数据大家想想啊,那咱们这个步骤应该是怎么样的?造日志数据这个步骤应该什么样的,咱们应该先怎么做呀?
04:01
先把整个日志采集平台是不是得先得启动起来,咱们日志采集平台包括一个卡夫卡,然后呢两个啊,当然三个应该是啊,102103是不是咱们是两个日志服务器,这俩是不是都得起来啊,当然他们俩的逻辑是一样的,然后呢,再把104这个提起来,咱们先把这个通道起起来。接下来之后怎么做来着,是不是执行咱们那个模拟生成日的脚本log.sh,然后这个数据就会被这个采集通道给采集到HDFS上啊,对不对,是这样的啊好,那现在呢,我们把这个采集通道呢,先给它启动起来啊呃,我现在呢,X和GPS看看现在进程,现在呢只有一个呃,HD海路吧,那没有其他的啊,我现在先把卡夫卡启动起来啊KF ka.s start。走啊,昨天没骑对吧?啊,没错啊,要骑卡不卡得先起JK,我这个卡不卡呢,肯定一会自己挂掉了,因为没有JK嘛,啊GPS一下哎,还没挂掉啊。
05:00
现在是没了啊,因为没启ZK嘛啊行,正好来个错误演示啊,来我们再启动ZK,先启ZK。好,ZK呢,应该提起来了,咱们查一下状态,Letters,好,Follow leader follower没问题,那现在起卡夫卡,卡夫卡点哪走?嗯,好,那卡夫卡呢,现在已经啊启动起来,启动起来之后呢,咱们稍微等一会儿,那卡夫卡呢,初始化完,然后呢,我们再去启动辅,因为F是不需要连接咱那个卡普卡呀,对不对,那现在我们启动啊S咱们有俩脚本,一个是f1.sh,它启动的是102和103这俩嘛,那f1.sshstart啊启动,那这时候呢,我们在执行f2.sshstart啊把104这个提起来啊,那都起来了,我们看一下进程SGPS。啊呃,Application啊呃,Application啊,Application是不是都起来了,卡不卡卡不卡啊,这个卡卡OK没问题,那整个通道都采集完了,那咱们就可以准备去生成数据了啊那生成数据呢,我们需要生成的是6月14号的数据,对不对,那也是说我们的数据写到HTS上呢,咱们得让他写到6月14号才行,对不对,那6月14号那个数据啊,就是咱们那个最终HW那个路径啊,这个六月14它是怎么怎么解析而来的,是不是根据那个时间戳决定的呀?啊以问的hi着当中,哎,那个时间戳啊,那个时间窗,那个KV就是time step,然后大家都记得我们之前做采集项目的时候写了一个拦截器,对不对?那你问的呃,那个海尔当中那个time step,咱们是怎么给它加上呢?是不是从日志当中去获取时间呀,对不对,那日志当中的那个时间咱们是怎么指定的,因为日志咱们模拟生成的嘛,如果是真实环境,那你每条日志是不是时间圈,就是生成这条日志的时间呀,对吧?但是咱们现在是模拟生成日志,那咱们日志里边时间圈。
06:54
由谁决定的呢?还记得吗?由咱们那个造日志的那个代码当中,是不是有一个配置文件呀,对吧,那咱们叫做log进到这个路径,咱这里面是不是有一个application.proper啊,对不对,那咱们打开看一下啊。
07:08
那这个里边有一个这样的参数啊,叫做mo.date啊,这就是模拟的日期啊,那咱们其实啊这块你这个日期配的是哪一天,那我们生成的日志里边的时间戳就是哪一天对不对,时间戳是哪一天,它是不是就进到了HTFS哪一天的路径上啊,所以说你想要哪天数据,是不是只要改这个参数就够了呀,它有这样的一个一个逻辑关系的啊,那咱们这样呢,就直接给他改一下啊,改成64,哎,零六杠幺四啊,杠14SHIFT的ZZ啊行,改完了,那这改了103是不是也得改一下啊,因为我们是有两个日志服务器啊,OBD model啊,AP block。啊,然后VMAPP,那这个呢,咱们还是改成零六杠幺四。零六杠14SHIFT zz行,那这边我们就这个改完了,改完之后呢,我们在102节点上面呢,执行log.sh统一在二和三上边同时生成日志,让它同时采集就可以了,那执行完之后呢,我们在这儿要做的事就是呃,Wait啊,就是等待啊。
08:13
来,咱们刷新一下啊,点到这个original orange data,然后金贸点到a log啊,Topic log,然后咱们刷新,诶,这个6月14号的路径已经出现了,对吧?那点进去看一下,在这儿呢,还是tmp结尾的,我们稍微等一会儿,等到这个文件关闭,那咱们再去停,停止咱们的一些进程,行拉罗已经这个出现了,对吧?那文件已经上来了,哎,造一个14号的就行了,那6月15号的数据我们后续再搞,咱们现在就造一天,咱们就以一天为例啊,咱们呃,用这一天的数据把咱数仓从头到尾的整个流程开发完之后呢,哎,咱们再去重新生成一天数据,然后呢,再使用阿兹卡班全流程给咱们调度啊,那提交任务时据不是阿斯卡文自动提交了呀,对吧?咱们准备好数据,让他一次性的啊,一套流程给他跑完就可以了,这是咱们后续的规划啊,咱们现在造一天就够了,行日志造好了,造好之后呢,因为咱们集群资源有限,所以说这时候卡不卡这一进程呢,咱们就还给它关掉就行了,比如说我先关掉这个F2STOP,然后呢F1。
09:14
一这个stop吧,啊,然后呢,我们卡不卡啊,先关卡不卡再关CK对吧?知stop那后大家要注意啊,关卡不卡的时候呢,它是不是需要一个过程啊,它比较慢啊,你看这卡不卡进程是不是还在呀,对不对,这时候你先不要去执行那个租K班的停止命令,你等卡不卡进程真正的消失之后,你再去停止组K板,它需要一定时间,咱们等一会儿吧,啊现在一会我再关吧,啊这让他关着,那一会再关JK,那现在咱们日志就算是造好了,那接下来咱们造哎业务数据啊业务数据啊,那业务数据我们造的话呢,呃,相对来说就比较慢了啊,比较慢了,因为什么呀,因为咱们业务数据是怎么上到hfs上的。通过谁通过scoop打上去的对吧?啊,那你scoop脚本执行比较慢啊,那咱们现在呢,先在哪?我们需要先在买serve当中,注意啊,是不是先在买serve当中得先干啥呀?先生成6月14号的数据,再使用SCO把MYS的数据写到HT,是不是应该是这样一个流程啊来咱们开始啊,CD到OB啊Mo啊然后呢,应该是叫做DB log对吧?DB log,然后这里边也有一个软件叫做application.proper那这里边也有一个Mo点给参数,那这个参数我们也要改日期啊,改什么呀,改成零六杠幺几幺四,零杠幺四啊然后下边呢,有俩参数啊,啊哪俩参数一个是它。
10:37
啊,是否重置用户表,是否重置除用户表之外的其他表啊,那这个是不是相当于是什么叫重置,应该都知道对吧?啊什么意思啊,如果说我这个都设成一,就是都重置对吧,那都重置那相当于它会干什么事,是不是先把咱们买磁Q当中的表清空,然后呢,再给你写入6月14号的数据啊,啊如果说设成零,它会保留之前的数据,然后再给你追加进去啊这是哎,咱们这个清空以及不清空这个作用,这个重置的意思啊,那在这呢,我们呃,就假定啊,假定我们这个数据仓库啊,不是数据仓库就咱们业务系统,假定业务系统我们就是从6月10号,6月14号才开始上线,也是我们的最早的数据就是从6月4号开始的,那也就是说我现在呢,可以把它设成都设成一啊一,然后让他把前面数据清空,也就是我们数,呃,业务系统当中第一天的数据就是六月14啊,你可以这样设一下,然后后续我们再到第二天的时候,是不是还有6月15号啊,对吧,那这个到时候咱们怎么做呀,14号数据是不是还得保留下来,那到时候我们。
11:37
给它设成零啊就可以,那现在呢,咱们因为第一天我就可以先设成都是一就可以啊,哎,Shift z z行,那这时候配完了我们,诶我那日期改没改啊,改了啊,那这时候呢,我们执行加va杠,哎这儿然后呢,我们执行这个炸包,然后注意啊,执行这个命令必须得在这个配置文件所在的路径下去执行啊,为什么?因为这个炸包它所读取配置文件的时候,是不是读取的是当前路径啊,所以说你必须得在它所在的路径下去执行这个命令啊来我们执行走。
12:13
嗯,好,那这个程序它运行完之后,大家说啊,我们这个数据现在写到哪了。是不是仅仅是写到了MYSQL当中啊,仅仅写到my sol当中啊,这时候咱们可以看一下啊,来,我们连上MYSQ啊,看一看数据有没有正确的生成。稍微等一下啊。来找这个机贸啊,联系一下,连接一下。嗯。啊,这个连的有点慢啊。诶,连上了,我们打开这个集贸数据库,然后呢,找到,呃,咱们那个随便找一个跟时间相关的,比如跟订单相关的order ino对不对,那咱们看一下是不是有16号的订单。呃,14号了,六月14有对吧,那说明咱们现在这个数据呢,已经这个造好了啊,造好了行,那日志咱们也搞定了啊,也不是咱们那个日志搞定了,这个业务呢,我们也到买circle了,但是这个业务数据咱们得到哪才算准备好了呀,是不是到HTS啊,所以我们还得使用那个库脚本去导一下啊,自己到屏目录啊,那这时候呢,我们执行点杠my circle to h FS啊,然后这个得问大家了啊,这个脚本咱们怎么穿参。
13:24
啊,咱们回回顾回顾一次了啊,第一天就回顾了,怎么用先传一个啥,传all是吗?注意啊,咱们现在传all还是传first啊,因为咱们得看第一天是哪一天,对吧?我们现在刚才刚说了啊,就是我们现在假定6月14号就是我们导数据的第一天,那所以说咱这不表都得导上去啊,所以咱们这传first啊,那后续从第二天开始,我们交给家的卡顿调度,是不是得传all了呀,那这日期,因为咱们现在是测试环境啊,不能让它自动获取前一天啊,咱们哎是不是传一个指定的日期就行啊,哎,零六杠幺四让它执行行了,然后回车。
14:01
这个脚本呢,相对来说比较慢啊,他可能会传大概十几分钟20分钟啊才能结束啊,那我可以问他一下啊,你说咱们这个数据量大吗。我们在买搜狗当中,是不是也没生成多少数据啊,对不对,那他为什么还这么慢呢。十几20分钟啊,为什么这么慢?啊,然后这么慢,咱有没有什么办法能够让他快一点呢。有没有什么办法?啊,为啥这么慢呀?我记得这个应该也跟大家提过啊,为什么呢。想一想。为什么呢?是不是得看一下咱这个脚本的结构啊,对不对,咱们去看一下这个脚本的结构啊。来,我们CD到这个B目录里啊,VM一下这个脚本啊。Vm my circle to hts,然后呢,我们往下看啊,咱们来到最底下shift j啊,最底下咱们传的是first对不对?传first是不是会依次调用这样的几个函数,注意是依次调用啊,那每个函数都是一个,什么都是一个。
15:01
四库不是一个,而这每个月是几个呀。是两个mmr,因为这个函数当中,咱们一步是导数据,一步是建索引,对不对?所以说每一个其实都是2MMR,那咱们这儿呢,一共导了20多张表,那应该跑多少个mmr啊,40多个M2啊,而这40多个mmr他是怎么跑的呀?是串行跑的,因为它是依次执行对不对,第一个完了,第二个,第二个完了第三个啊,那所以说那这个很显然它串行跑啊,那咱们需要提交这么多MR,你提交MR是不是需要初始化,初始化需要时间,那所以这个任务它就比较慢了,那其实问他一下啊,咱们这20多个表啊,说他们之间有这个依赖关系吗。有依赖关系吗?我有要求必须这个完了才能导导这个吗?没有对吧,那所以说那咱们这几个任务本应该是可以并行去提交的,那咱们提交的时候呢,已经给他放到了一个脚本当中,那所以说它其实是。怎么去串行提交的,所以它比较慢。
16:01
你要想让他快一点,这儿可以怎么解决怎么解决啊啊,咱们可以把这20多张表啊,咱们给它拆开啊叭如说啊,我几个脚本啊,我我三个三个表一个脚本,或者一个表一个脚本,对不对,那这样一来,我们后期交给阿兹卡班去调度的时候啊,交给阿兹卡班去调度的时候,那他是不是会一次性的帮我们同时提交这多个表的导数据的任务,那他们是不是就可以并行去执行了呀,那他就不慢了啊,是这样的啊,所以这块呢,大家要知道这里边呃一些这个就是他们为什么慢啊,然后慢了之后,咱们怎么让它快一点啊,咱们得搞清楚,行,那就说一下这个,那咱们这就不改了啊,不改了就让他这个慢慢执行就行了,咱们也不等他了啊,OK,那我现在把视频录一下。
我来说两句