00:00
好了,同学们啊,咱们接下来来看一下咱们这个第四章啊,也就是说咱们这个K点4.0它的一个查询引擎,我们这一章简单介绍一下,其实我们已经说过了啊,咱们这个K4.0是以这个Spark作为产品型的,然后呢,他每一次查询都会在咱们的这个雅安的后台有这么一个spider,这么一个长期运行的任务啊,这是官方的一个介绍啊,说这是咱们这个spider啊,也就是说咱们这个spider context这么个应用程序,是咱们这个Spark应用程序,它后端实现的一个新型分布式查询运擎。它是作为一个啊long running就是一直运行的这么一个Spark应用程序存在的,而咱们这个spider啊,会根据咱们这个killing.k.sparkup开头的一个配置项啊,设置的咱们这个SPA参数来获取咱们这个雅安资源,那如果说啊,你在这儿啊配置的一个资源参数太大。可能会影响咱们这个构建任务,甚至啊无法成功启动咱们这个spider,那如果说啊,咱们这个spider没有成功成功启动呢,那我所有的利用的一个查询任务它都会失败,因为你这个sper啊,这么一个最基础的这么一个会话,你都没有启动成功,那所以说啊,咱们这个K是不能执行我这个查询任务的,因此啊,请你在kidding的这个web UI来检查咱们这个spider一个状态。
01:24
啊,不过啊,默认情况下,咱们这个查询的这么一个SPA参数,它设置的比较小,在生产环境中,大家可以适当把这个参数参数调大一些,以提升咱们的一个查询性能啊,也就是说啊,大家打开这个K起来以后呢,你可以在这个system里边是吧,点击这么一个ider,在这个spider里边我们就可以打开啊咱们的这个呃。Kid的一个spider这么一个运行界面啊,你也可以直接上您的雅安啊,在您这个雅安的首页你也能够看到啊,咱们是有这么一个一直运行的这么一个spider这么一个任务的,而咱们这个K就是用咱们这个spider作为这么一个。
02:04
查询引擎啊,它里边跑的是这个SPA circlele,好吧,啊,那我们明白这个以后啊,首先咱们刚才也讲了啊,如果说这个kidding你每一次啊,第一次启动,也就是说啊,当你这个SP任务啊,它是关闭的情况下,而我kidding的第一条circle,它运行起来它的速度就比较慢,为啥?因为它的这个白点,它的初始化也是需要耗费一定时间的。那如果说啊,你第一次都不想让他慢啊,也就是说咱们这个spider你想他干嘛呀,你想让他每一次随着kidding的启动而启动,你可以通过一个参数来设置,没问题啊,在咱们这个kidding的一个设置参数里边,有这么一个参数啊,叫kidding.query是吧,Auto spider contexttest enabled enabled,如果你把这个参数设置为true,那这样一来,咱们这个spider就会随着咱们的kidding的启动而启动。啊,就是默认情况下为副词啊,如果你把它设成副词的话啊,咱们就会在执行第一条circle的时候,我才会启动这个spider啊,我执行circle,或者我同步我那个have的数据,我都会启动spider是吧?哎,因此咱们K的第一条circle它的速度比较慢啊,因为啥,因为我包含了咱们这个spider任务它的一个启动时间,那如果说你不想第一条这么慢,你可以把这个参数设置为这个处啊,这个咱们后边会的一个讲是吧,好吧啊。
03:27
那除了咱们这个SP点这么一个查询引擎以外呢,大家还还可以看看一下什么呀,看一下咱们这个kding在咱们这个HDF4它的一个存储目录,好吧,那接下来啊,我们就打开咱们这个HDS。在咱们的HDFS的根目录下啊,一定会有这么一个目录叫做K点,那么接下来就打开这个K点,在这个K点里边有什么呀?有一个K点的me塔雷塔是吧,Kidding的一个语言数据啊,那咱们接下来就打开这个kid原数据啊,在这个kid源数据里边就有咱们这个项目啊,因为咱们当初在玩K的时候,我的这个项目名字就叫first product,那所以说啊,在咱们的这个HDFS上,咱们就有这么一个first product,大家就打开这么一个first project,在咱们的这个first project里边,你就可以看到跟咱们这个K有关系的所有的目录。
04:18
那这四个目录啊,我简单介绍一下好吧,我这个文档上有写第一个目录,就是咱们这个临时的一个文件存储目录啊,就是在咱们的那个呃,Project就是项目名字后边啊,有一个job t p,而咱们的这个job t p里边是吧,存储的都是一些临时目录啊,这个大家了解一下就好了,好吧,那除了这个临时目录以外呢,咱们还有一个park目录,而咱们这个park,哎,它里边存的就是咱们这个kidding,每一个cube它的一个目录啊,它的一个数据,好吧,那咱们接下来就打开这个pocket,在这个pocket里边啊,就有一个first cube,因为咱们当前啊,在咱们的这个K里边,我是不是一共只有一个cube啊,就叫first q,那接下来我就它可以打开我的这个first q。
05:02
在咱们这个first cube里边啊,它的每一个目录就是咱们这个killing cube,它的一个S目录,就是我我这个cube啊,每一次构建都会有这么一个segment啊,就有这么一个segment,那咱们这个segment啊,是按照咱们这个目录来存储的啊大家知道啊,在咱们这个课程里边,我刚开始是手动构建了一下,然后呢,我在我那个脚本那一节,我是不是用脚本构建了一下,所以说咱们当前咱们这个first q下边啊,一共就有两个目录,那我这每一个目录都是我的每一次构建。啊,由于咱们这个first客户啊,咱们这个实时表没有分区,所以说啊,咱们这个不分区的这么一个客户,他的每一次构建都是一个全量构建,都是一个forbi全量构建,好吧,那因此我们这多次构建啊,它只会更新咱们的数据,它并不会增增增加,也就是说啊,我更新两次,我构建两次和构建一次,如果说我的数据不改变,我在K里边啊,它的一个查询circle口,就是查询circle的一个结果应该是不变的。
06:03
你就比如说啊,我按照咱们这个D内是吧,按照咱们的这个DNA,我再给你这个分组,咱们再来统计一下,你即便咱们是构建了两次,而我这个CU补的一个结果是没变化的,为啥?因为咱们每次啊都是全量构建,它每次对于咱们这种全量构建啊,相当于全量表,就相当于咱们HUB里边的全量表,而咱们这个K呢,每次都会拿咱们这个全量Q的最新的一个segment来进行查询。大家知道就好了啊,这是一个小细节啊,大家了解一下啊。那明白了,咱们的那个q boy的,呃,文件存储目录以后呢,那再往下啊,注意啊,咱们那个文件名就是segment加上一个name好吧,这个应该是name啊nameme好吧,啊这咱们这个segment它的一个名名名字我刚才说了啊,它是一个forbi,后边跟上一个编号啊,那明白这个以后,那咱们再往上退啊,在咱们的这个first project下面,除了这个public还有一个什么呀,还有一个Spark loss。
07:04
而咱们的这个Spark logs就是咱们Spark的一个运行日志啊,大家可以在这个Spark logs里边是吧,看到咱们这个构建任务,它的一个driver和一个executor这么一个日志,大家想看可以看一看,好吧,这都可以可以点开直接查看的。啊,他的这个日志啊,有Jason,哎,有这个log,大家可以简单这个查看一下,好吧,那这个日志啊,就是咱们当前这么一个啊driver的日志,好吧,Driver看完了,你还有可以看一下这个ex,它这个日,好吧,那这个日日咱们简单就不看了,那除此之外呢,我最后一个是什么呀?是咱们那个维度快照表,它的一个存储目录,大家可以看到啊,在咱们的这个first project表是吧,还有这么一个table snapshot这个啊,就是这个维度的一个快照表,大家可以打开这个快照表,在这个快照表里边是吧,因为咱们那个first project表只有一个。维度表就是这个部门表,那咱们这个部门表在这里边儿就有这么一个快照数据,那这接下来就可以打开这个快照表。
08:05
在这个快照表里边,你发现啊,它有两个目录,那它为什么有两个目录呢?那就是因为咱们构建两次,注意啊,你这个K的每一次构建啊,它都会干嘛呀,它都会对你的事实表啊做一次构建。因为咱们这个实时表内容会发生变化,知道吧?啊,如果说啊,你这个实时表你没有分区,那我每一次都是一个全量构建,如果你这个时表分区了,那我每一次都是一个增量构建,这是大家必须了解的内容,那除了这个时表以外呢,我还有一个什么呀,我还有一个维度表啊,就比如说以咱们这个例子啊,咱们的维度表是不是就这个部分表啊,是吧,维度表咱们这个市值表是那个EP员工表,而咱们这个维度表是那个dept啊部分表。啊,所以说啊,咱们这个K啊,它的每一次构建,对于咱们这个实时表啊,要么是全量构建,要么是它的资量构建,而对于咱们的这个维度表呢,我每一次都是一个全量快照,因为你应该知道啊,在你这个每一次的构建过程中,咱们的实时表会发生变化,而咱们的维度表也有可能会发生变化呀,是吧,在我have这边,我的数据是有可能会变的,同学们。
09:14
那我这个数据的每一次变呢,我为了得到我这个数据的变化过程,所以说啊,咱们这个维度表,我这个K的保障量,它每一次构建都会对咱们的维度表做一个全量快照,因此啊,注意啊,它是一个全量快照维度表,所以说咱们的每一个维度表,它将来的每一次快照都会存到咱们这个table STEM shop的这么一个目录下,好吧,它的底层存储都是park的文件,是有snap压缩的这么一个part文件,大家简单了解一下好吧,啊,那咱们的这个HDFS这么一个路径,大家也简单了解了,了解完以后呢,那咱们接下来就可以看一下啊,咱们刚才讲的那个查询参数了啊,在咱们这个4.1章节咱们讲了啊,咱们的这个8SP点。是吧,咱们这个SP任务会根据咱们这个killing.k.SPA com开头的这几个配置,我们来获取雅安资源,那么接下来就来看一下咱们的几个参数好吧。
10:08
它的它不是构建参数啊,它应该是查询参数,咱们这个kidding啊,它的一个查询参数啊,嗯,是把咱们这个文档简单改一下啊,咱们这个kidding的一个查询参数全部以这个kidding.query.spa开头啊,默认情况下啊,用于查询的这么一个SPA参数,它设置的会比较小,在这个生态环境中,如果大家啊,在你们公司的集群里边啊,配置的这么一个K点,你可以适当把这个参数调大。啊,提升咱们的查询性能好吧,那咱们接下来就在咱们的配置文件里边,咱们看一看这几个参数,好吧,啊,大家可以打开进到这个K安装目录啊,OT modu k里边有个康复目录,在这个康复目录下,诶就有这么一个key in.purpose那咱们接下来就可以VM录啊,打开这么一个k in点。在咱们这个king purpose里边是吧,它的这一栏就是Spark这么一个查询引擎,它所有的一个参数,呃,就是咱们这个K的一些查询参数。
11:06
啊,大家可以看一下啊,咱们这个参参数第一个啊,就是咱们那个是否跟着kidding每次启动而开启咱们那个spider啊,它的默认值为false啊,这个东西大家可开可不开啊,我这边就不开了,好吧,如果你开了,你每次K点启动我就会开spider,如果你不开,我的K点启完之后呢,我第一次运行那个circle,哎,我才会开启这么一个spider。好吧,第二个啊,是咱们这个spider它的一个应用程序啊,这个一般没有人改,都用默认就可以了,那再往下啊,就是咱们这个查询任务,它运行的一个SPA任务的一个master模式,雅安模式啊,肯定没问题,我们在我们要在雅安上是吧,跑这么一个SPA任务来查询咱们的数据,好吧,再往下啊,就是我driver一个内核核心数我们用一个默认是一个好吧,然后driver内存是四个G啊,Driver的这个对外内存是一个G啊,E核心数是一个是一个,然后E数量是一个是吧,Inecor memory是四个G,然后inecor的这么一个,呃,对外内存也是一个G啊再往下这些都不重要了啊,我就不讲了,好吧,所以说啊,咱们这些查询参数,我都可以通过咱们这个K点的这么一个配置项来修改啊,人家默认给的这个是吧,比较小,在公司里边啊,如果你们在生产环境中要搭建咱们这个K集群,你可以适当调大这么几个参数,来提升咱们K的一个查询速度和这么一个查询性能。
12:29
好吧,那咱们K点的这么一个差引查询引擎啊,我就简单介绍到这里啊,咱们只是对这个查询引擎啊,咱们做了个介绍,大家了解一下就好了,好吧啊。
我来说两句