00:00
好,那Maxwell配置完了,接下来呢,我们就要测试一下Maxwell了,那在测试之前我们呢,首先要启动卡瓦集群呢,哎,因为他要往卡瓦集群写数据嘛,那启动卡瓦集群之前,我们要先启动主亏本集群啊,哎,把主亏本和卡夫卡都启动,哎,我们才能测试,那我在这儿已经都启动完了啊XCGPS我们查看一下啊,ZK启完了啊,卡不卡我还没启动STT好,启动启完了之后我们再查看一下。啊,OK,已经启动了,那启动之后,哎,这个怎么测试呢?我们看看Maxwell在这个地方啊,有一个启动的命令啊,那怎么启动呢?你看啊,通过B目录下面的Maxwell这个脚本,然后杠杠con指定一个谁呢?指定一个con properties,我们刚刚配置了这个配置文件,哎,是不是启动的有点像我们的卡不卡启动命令啊看啊。
01:08
来,我们CD到B目录看一眼,这个目录当中。就有这么一个脚本啊,叫做Maxwell,它就是Maxwell的启动脚本啊,那我们启动一下吧,我找到并目录下面的。马克斯,Well,哎,然后呢,杠杠conf,哎,再找到什么呀,Conf.proper哎,再来一个刚刚dae啊,刚迪貌回车回上完之后你看啊,哎,Version哎已经启动了。那来吧,我们看一看。XC啊,直接GPS就行,GPSGPS好了,那如果说这个MYL报错了怎么办呢?哎,你看看啊,在这有这么一个日志,我们也可以过来看一看,老是啊,如果说那有同学说我这个max你没起来啊,诶没起来你肯定是报错了,那怎么办?来到这看一看,直接就给你输出了啊,你看一下这个,那不就出来了吗?哎,如果说有报错的信息啊,他就会找到这儿了,那出现问题啊,第一时间先去看这个报错的信息啊,OK。
02:23
那Maxwell启动完了,那我们现在想测试的是什么呢?测试的是哪一个过程啊,我们看看啊。是这么一个过程,这有一个业务采集通道,我们要把my circlel的数据采集到哪啊,通过macel采集到卡不卡啊,卡不卡,我们现在启动了吧,哎,Mawell我们刚刚是不是也启动了MYS安装完它默认是自启动。那么我们现在怎么样才能测试啊?我再启动一个消费者消费谁呀,消费一个topic是不是就完事了啊,我们看看这个topic能不能把my circle表当中的数据给我读出来,那如果说读出来了,我们max这个通道啊,你就启动了啊,好啊,打通了,那来吧,诶在文档当中啊,我们在这儿啊,也给大家诶放了这么一个卡夫卡的,哎,消费者啊。
03:27
这消费我们的max y这主题,好然我来到103,我在这右键粘贴,哎,消费这主题啊,那消费那也就是说你这地方什么也没有啊,啊没有数据啊,原因是什么呢?原因是我们还没有生成数据啊,我们得生成一下它才能动,那怎么生成呢?你看啊,我CD到。CD-OPT model DB_log这里是不是有一个扎包啊,我执行一个加va杠加尽量回去。
04:09
好,我们稍等他一会儿,哎,他现在已经往我们的MYSQL里写了,那写完了之后,你看我们这边是不是就能实时的把ma SQ表当中的数据给抓取出来了,Maxwell啊,我们在这呢,给大家提供了一个Maxwell的启停脚本,那我们把这个脚本拿出来,我们看看它是怎么写的啊,看看Maxwell的启停脚本我们应该怎么写。呃,然后我来到我的notepad加加打开,打开之后我给它粘贴到这。Ctrl a ctrl v粘贴,粘贴之后我们一点一点看一看,首先井号叹号并当match,这是什么呀?这是一个S脚本,那下脚本我们就不能先看我们定义的这些函数了,我们要看case选择器,通过case选择器它获取了第一个参数,第一个参数是AR stop,或者是一个restar,为什么我们在这不光有启动和停止了呢?我们呢,可能接下来要对mape一个频繁的启停,所以说我在这又给它来一个restart命令,那restart它就是重启的意思,重启也很简单嘛,我先停止,停止完了我再启动,这不就重启了吗?啊,就这个意思啊,再来。
05:30
那接下来我们一个一个看,先首先看start Maxwell它是怎么做的,那来到start Maxwell,在start Maxwell这里啊,它又调用了一个函数叫做sta斯max,它先判断了一下我们Maxwell的状态,那我们看看它判断了啥呢?看这result等于一个杠EF,它进行一个过滤,那过滤的是谁呀?杠grape你看过滤出来。
06:00
我们的Maxwell组件,那我们来执行一下它看看能不能过滤出来我们Maxwell组件,我来到这,然后102右键粘贴回车,好,那你看它现在已经过滤出来了,我们的你看这行,这行就是我们Maxwell的进程了,Maxwell进程它能过滤出来了,注意我们这是不是还多出来这么一行啊,好,那这行稍后我们再看怎么搞啊,行,那现在这一行我们过滤出来了,过滤出来之后我们刚刚说它还多了一行,我们再来一个grape-v grape把它自己给过滤掉,那这个命令大家应该已经很熟悉了啊呃,这个方式就跟我们在写启停脚本的时候是一样的,那我们过来粘贴,粘贴之后我们就能看到现在只剩下一行了,那只剩下一行了,这个命令它最终是干嘛呢?它来一个WC-LWC大家应该。
07:01
带的很熟悉啊,好,那大家想一想,在我们当前的这个命令当中,它最终要实现一个什么效果?注意啊,WC你们虽然很熟悉,但它不是你们每天都要去的那个WC,它是什么呢?它叫做word。Count。啊,做一个统计word count,那统计什么呢?杠L,杠L的意思是论line统计我们的行数,那好了,那来到我们的这个叉cel,我看看,哎,我这呢有这么一行数据,注意我们现在看的是1233行,但是它仅仅只有一行,为什么呢?原因呢,这是我叉cel,它给我来一个自动换行,所以说我在这看呢,它只有三行,那你你怎么怎为什么这么这么说呢,你看我给它缩小啊,我把我的差项缩小一点,缩小一点,我再次执行一下这个命令。你看那这个命令现在它就不是三行了,它现在变成了四行了。
08:03
原因就是我们叉CL换行导致的啊,那如果说我的这个叉CL的面板它足够大,那它可能一行就装得下了啊,所以说在这个地方我们再给他来一个word count,我们看看它最终会返回一个什么结果。右键粘贴,然后我一回车,回车之后呢,他给我们进行了一个打印一啊,你看我count是一,那就证明我们当前这个进程它是存在的,如果说我们当前这个进程不存在,那我count的结果啊就是零了啊好。那我们呢,通过反引号,反引号它可以把我们当前这个命令的输出结果给它进行一个赋值,赋值给前面的result变量,然后呢,我们当前的这个sta,呃,杠下划线Maxwell这个脚本这个这个函数啊,它就有一个返回值,返回值就是我们的result结果,好了,那接下来它呢,你看下边怎么做的,我现在这个地方获取了一个maxl的结果,无非就是零和一,如果说我进行一个判断,Dollar问号,我获取你的输出结果,Dollar问号let小于一,那小于一就是零呗。
09:24
那怎么办?小E1,它就是零,那证明我们的Maxwell没有启动啊,没有启动我就要给它启动,那启动的时候我就执行一个Maxwell的启动命令就完事了,那如果说它等于,那就证明我们的Maxwell是启动了,我们呢在这就什么都不需要做,Maxwell正在运行,那同样我们关闭Maxwell的时候,你看我们也啊给它进行了一个判断,判断的时候无非呀,你的返回值就是零和一嘛,那我进行一个判断呢,你这个当前的命令,这个是杠GT是什么大于零啊,杠GT是大于零,如果说我们获取的输出结果是大于零的,它代表我们当前的这个进程正在运行,所以说我们要给它停止,那停止的时候我们对应执行一个停止的命令,这个停止的命令啊,已经很熟悉了啊,我呢就不不再给大家说了,跟我们flu的启停是一样的,OK,那这个脚本我给他拿回来。
10:26
复制CTRLCCTRLC,然后来到我们的加目录的闭目录,我vim一个MXWMX w.SH回车,回车之后我把这个脚本给它粘贴过来,冒号WQ,那我们现在啊,先看一下进程啊。Maxwell进程它是启动着的,那我啊,我先给他一个权限ch mod777叫做MXW。点SH回车,接下来我执行一下它的停止命令,S top,好了,My swell停止了,我在JPS一下看看,OK,那现在Maxwell进程已经被停掉了,我再来一个启动命令,Maxwell s t rt推迟,好,那现在Maxwell已经正在启动了,我在GPS一下,那这个进条已经起来了,证明我们的启停脚本已经生效了,那好了,那刚刚呢,我们体验了一下ma数据的增量同步了,啊,这是增量同步,我们发现,诶,当我们MY往MYSQ当中写一条数据的时候,他就能拿出来。
11:41
但是在这呢,Maxwell它又给我们提供了这么一个功能,叫做历史数据的全量同步啊,那也就是说max它既能做增量同步,也能做全量同步,那它这个全量同步能把数据写到哪呢?哎,是能直接把my my circleql的数据库给我们写到HDFS吗?不是的,他不能把我们的数据直接写到HDFS。
12:14
那他能写到哪儿呢?哎,他依然呢,是把全部的数据给我们写入到卡夫卡啊kaf,那这些东西有什么用呢。啊,这全量同步有什么用呢?啊,我们分析一下。我们的my circle啊,有可能已经运行一年了,但这个时候我们一直就只有离线出场啊,只有离线输场,我们每天通过谁呢?通过这叉啊,这工具我还没学呢,但大家知道这叉可以全量的把数据通过来。好了啊,这次买蛇口已经运行一年了,但是突然我们现在,哎要上线这个实时出仓了啊,要上线这个实时出仓了,那你上线实时出仓,我就要把MYSQL的数据实时的同步到我们的实时出仓。
13:09
啊,那这个时候我们就想到了,有这么一个工具叫做Maxwell,他能做这个事啊,OK,那没问题,那现在有这么一个事儿啊,我想计算我这一年的历史数据,怎么办呢?你的Maxwell你只能同步从我Maxwell上线的你最新的数据啊,你历史的数据我同步不过来呀,那么这个时候我们就要用到ma XL的历史数据全量同步的功能了,也就是说在做增量之前,我先把这个全量数据啊,哎,我先把之前你这一年的数据,我给你全部的拿到实时出仓之后,我再把新增的数据来同步过来啊,OK。那我们来看看历史数据全量同步怎么做呢?啊,Ma给我们提供了这么一个功能,叫做不T功能,哎,Maxwell它就是用来说历史数据全量同步的,那这个怎么做呢?非常非常的简单啊,就是一个命令看看啊,找到B目录下面的。
14:18
Maxwell波wap脚本啊,那并目录下面我们看一看呗,啊CD-OPT model Maxwell的并路,哎,我们发现这里既有一个Maxwell啊脚本,又有一个maxwellwa脚本啊,这个呀,就是来帮我们做全量同步的啊,做全量同步的那怎么用呢?找到这脚本之后,杠杠这个位置指定一个。数据库名啊,再来一个刚刚table。指定一个我们需要同步的表名,再来一个杠杠con,指定一个我们刚刚的配置文件,哎,是不是就比我们刚才多了这么两个呀,杠database位啊,杠table啊,多了这么两个命令啊,多了这么两个参数,同时它少了一个什么呢?杠demand Dan,杠杠为什么少了一个他呢?因为这个命令啊,一旦执行完它就退出了,它是一个全量同步嘛,它是全量同步啊,全量执行完之后它就退出了,它不像我们刚刚的这个增量同步这一进程需要一直阻塞在后台的啊,它不需要,那好了,那我们呢,就执行一下子看一看。
15:37
执行产。CTRLC啊好,那在执行之前呢,我呀给这个地方来个空格。好啊,在这我右键粘贴我们看一看啊,执行完之后是什么样,注意执行这个命令之前啊。
16:01
你要保证你的macel进程是启动的,哎,你必须要保证你这个macel进程是启动的,它需要用到mawell这个服务里边的这个东西啊,那他要通过这个服务往我们卡不卡里写啊,他需要Maxwell这个服务啊,你你没你这个Maxwell服务挂了,它是写不进来的,执行是不成功的,这个地方报错啊好OK。粘贴回车,我们看一看。哎,你看刚刚是已经start了啊,结束了,如果说你妈进程没启动,那么这个地方它就会一直阻塞在这,哎直到错误退出啊OK,那完事之后我们怎么能看到效果呢?啊,我们这是不是有一个消费者呀。OK,刚刚我,哎打了大量的空格啊,往上点往上点从哪开始的呢?往上啊往上找一找,嗯。
17:00
哎,从这开始的,那么这个就是我全量同步过来的数据,那我们看看全量同步过来的数据有什么区别呢。啊啊,先找database,哎,这个没问题,这没问题,诶看这个第一条数据。Database gmail table是它type类型啊,那boot的type类型你看所有,哎,不是所有的,第一个叫什么呢?BOO stop start,哎,叫做开始,这还有一个TS,哎,Date是空的啊,那我们就明白了,不stop的第一条数据啊,它是一个空数据。哎,只是呢,做一个开始的这么一个起点,BOO up start,那中间的呢,所有的都叫做BOO up insert,哎,就没有update delete,那我们增量同步这个状态是什么呀?Update啊,Delete insert,那它没有了,所有的都叫做up insert啊。
18:04
OK,那接下来我们再看看这个时间,你看所有的时间。他怎么的呀,它都是一个时间吧,哎,它都是一个时间,好,你看那这个时间是什么时间呢?我给它复制一下看看啊,我们找一个工具。那我们在这掌握工具。稍等啊,稍等一会儿有点慢,时间戳时间戳转换。好,我们看看这个时间,注意这个是十位的,那么它是秒,然后我给它转换5月18号26啊,那我这个数据是什么时候写的呢。
19:00
我这数据肯定不是09:26写的呀,啊,我这数据肯定不是09:26写的,我是09:26,我执行的这个命令吧。啊,我我09:26执行的这个命令啊,我数据什么时候写的,已经很早之前了啊,我很早之前写的这数据啊,啊,你还搁这呢,也就十多分钟啊,09:10执行的,那么我们现在就知道了这个TS,它是我们启动ma这个全量同步脚本,也就是boot这个脚本的这么一个时间,你看所有的时间戳它也都是一样的啊,时间戳也都是一样的,OK,那接下来我们再看看最后一个。再看最后一条数据。Type类型bootc,哎,然后TS时间戳一致,数据是空啊,那boot功能我们就知道了,Bootwap功能的第一条数据叫做boot stop,它的type类型啊,那最后一条数据它的type类型是bootwap complete,那中间所有的时间。
20:11
啊,都是一个时间,就是我们启动bootrop的这个时间,那所有的类型都叫做boot drop insert OK,那这个东西使用怎么用呢?我们只要注意一个点,第一条数据和最后一条数据,他们两个是空数据啊,我们呢,在计算的时候,哎,要给它排除掉啊,OK,那么这个脚本一般什么时候会用呢?一般会我们在这个mal上线的时候用一次就完事了,这个脚本用一次就完事了。啊,因为我们要把历史的数据给他全量同步过来,那如果说某些公司我对这个历史数据没有什么需求的话,那这个命令也不需要执行了,好,那来到文档上我们再看一看。你看boot数据输出的格式,第一条是boot start,最后一条bootropp complete,中间boot insert啊,Insert啊,所有的时间戳,哎,都是一致的啊。
21:14
嗯,OK,那这个地方呢,那我们暂停一下啊。
我来说两句