00:00
好了,同学们啊,明白了咱们的这个K的定义和咱们这个前置概念以后呢,那咱们接下来看一下咱们这个K的一个架构啊,首先告诉大家啊,咱们文档上的这个PPT就是完全从官网上搬接下来的啊,我们一起来看一下官网啊,首先我们现在打开的是K的官网,在这个king的官网首页啊,就有关于这个K的这么一个架构的介绍啊,首先告诉大家啊,咱们这个K它这个底层架构是相当复杂的啊,它的这个复杂程度不亚于咱们之前学的Spark和这个哈杜普。啊,所以说大家对这个king它是一个很高级的这么一个架构,我们要好好学一学,好吧,那它那那这个官网我们就不一起看了啊,因为官网上这个图画的相当复杂,它还包含了K04.0和这个K03.0以前的一些版本,那咱们接下来就重点看一下咱们这个K04.0这么一个架构啊,我文档的PPT是以咱们这个K04.0作为这么一个基础化的,为什么呀,因为这个K04.0,这个3.04.0它做了很大的更新。他换掉了自己的一个构建引擎和这个查询引擎,和自己的一个存储系统啊啊,那听过咱们这个K点三点的小伙伴,应该对这个3.0是有一个熟悉,呃,是有这么一个了解的,那所以说咱们接下来重点讲什么呀,讲一下咱们这个K04.0好吧,那我们首先打开我们这个PPT,我们来看一下咱们这个架构好吧啊。
01:18
这个K呢,它这个架构啊,我们先把这个图放出来,它底层的架构分为这么五大层,第一层就是这么一个rest API啊rest service,这个rest服务干嘛呀,它是用来对接咱们这个前端页面的。啊,就就就咱们这个rest server啊,Rest服务层对接咱们这个web web APP和咱们这个rest API啊,就能够通过circle来查询咱们整个KD,那再往下啊,就是rest层,往下呢,有一层叫查询引擎层,而咱们这个K的4.0,把咱们这个查询引擎,查询引擎换为了Spark,之前是那个哈杜普或者是二啊,现在它换成Spark,好吧,就是完全由这个SPA circle去跑的这么一个引擎,OK,那再往下呢,有这么一层路由层,那我们简单先了解一下啊,这一层路由层是干嘛的呢?这个路由层就可以把咱们这个circle给它转化。
02:09
如果说能够直接在你这个QB里边,也就是说啊,你这个pack底层存储文件我能查到,我就直接查,如果啊,我当前没有对应的客户,也就是说啊,你将来啊,没有计算这个客户,然后你还想查,那咱们这个路由层就可以把你这个circle口给他来上一个什么呀,查询下推推成咱们这SPA口,由咱们这个4SPA口直接查询have的原数据。啊,是这么一个逻辑,好吧,那咱们接下来再往下啊,路由层再往下呢,就是一个原数据层叫me塔,而咱们这个K点啊,把它的一个数据存在哪啊,存在这个my circle里边,好吧,大家看一下啊,咱们这个kin的原数据啊,King4.0以后呢,它支持把这个原数据存储在了my circle里边,OK。那我们整个K的最底层就是咱们的构建引擎层啊,因为咱们都知道啊,咱们这个K点需要读取咱们的外部数据源,然后呢,把这个数据进行一个QB的构建,然后呢,把这个构建的结果存储成一个park的文件,然后底层存在哪呢?存在咱们的HDFS上啊,这个啊也是K04.0,它做了一个大的升级啊,之前K03的时候啊,是存在那个h base里边。
03:18
那现在呢,人家感觉HP不好用啊,它不是一个真正的劣势存储,所以说呢,我就把这个底层的存储引擎换掉了,从这个HP啊,换成了park的这么一个列式存储文件,好吧,那整体这个架构啊,就是咱们整个K那个架构,你也可以这么看啊,刚才我是这个从上往下讲的,你也可以从下往上看,从下往上看啊,更清晰一些,好吧,就是最底层就是咱们的一个构建引擎层,就是KLY能够对接咱们的一个外部数据源,就比如说哈杜普啊,Have啊,还有这个CSV啊,这个CV啊,也是咱们这个KD4.0,它新增的一个功能。咱们这个KN4.0直接支持读取这么一堆CSV文件,然后呢,我就可以分析你的这个CC文件,然后把咱们这个外部数据源的数据啊,对接到咱们这个K里边,利用咱们的构建引擎啊,把把这个数据进行一个Q补的构建,然后呢,把这个Q补的一个存储结果,那么存成这个pack的文件,然后底层存到这么一个HDFS上。
04:16
好吧,那再往上呢,就是这个原数率啊,咱们这个K的原数率是存在这个my circle里边的,好吧,那再往下就是路由层,就是你将来在查的时候啊,你过来一个circle,那这个circle啊,如果能够从咱们已有的Q5查出数据,那我就路由到这边。那如果说啊,我已有的客户查不出来。那我就会进行一个查询下推,把咱们这个circle给它下推成SPA circle去直接获取have的原数据,所以说啊,咱们这个路由层比较关键啊,啊说在我后边章节里边,我会给他讲一个功能,就是那个查询下压,或者叫做查询下推,好吧,啊,那咱们再往上啊,就是查询运擎层啊,查询运擎层就是由Spark作为咱们的查询引擎啊,解析咱们的circle,好吧,就是客户端给的这么一个circle OK啊,那最后再往上啊,就是咱们的rest API啊,Rest server层。
05:04
那这个rest服务啊,就是对接咱们的rest API,然后rest API再往上就是咱们这个外部应用应用后端,好吧,那其中啊,这个rest服务它还支什么呀?咱们这个kidding它是支持标准的这个呃,数据库协议的,就比如说咱们的JDPC啊,咱们的OTBC啊,它都支持啊,所以说啊,咱们这个kidding是可以对接咱们的一个BI工具的啊,另外啊,咱们这个查询引擎,因为它跑的是SPA程序,而咱们这个SPA程序啊,是将来是可以跑在这个牙上面的。啊,如果你们公司你们这个调度框架用的是雅安,就可以发到雅安上,如果你们用的是K8S,我这个K的也支持跑在K8S上,所以说啊,整个架构大家可以可可以发现啊,K这个架构设计的还是比较复杂的,比较高级的么,一个这么一个架构啊,那咱们接下来再来看一下咱们这个文字介绍,好吧,第一层就是server啊rest server是一套面向咱们这个应用程序开发的一个入口点,它的这个目的就是实现针对咱们的K平台它的一个应用开发工作啊,此类应用程序我可以提供查询啊,获取结果啊,包括触发咱们的QB的一个构建任务。
06:09
获取数据以及获取咱们的用户权限等等工作。啊,另外啊,我这个rest server还支持一个rest接口,实现这么一个serve后查询啊,那再往下呢,第二层就咱们的查询引擎层,当你整个Q准备就绪以后,那么这个查询运行就可以通过获取并且解析咱们的用户查询它随后啊会与咱们的系统中的其他组件进行交互。从而向咱们这个用户返回这么一个对应的结果啊,咱们这个KN4.0啊,将咱们这个Spark作为唯一的一个查询引擎,它的底层啊,跑的是SPA circlele,也就是说啊,它的一个数据结构是那个DF和DS组成的是吧?学过Spark同学应该知道啊,SPA cle里边有两个编程出像一个叫data frame,另外一个叫data set,好吧,它是一个分布式的查询引擎。那第三层就是这么一个路由层啊,在最初设立的时候啊,曾考虑过将K点不能执行的查询是吧,引导选have中继续查询啊,继续执行,但是呢,实践过后啊,发现咱们这个have跟这个kidding它的一个速度,并且差异过大啊,就比如说啊,如果我能查到cube。
07:18
哎,那咱们的这个。呃,Kidding circle基本上就是压秒级别返回,就是一秒就返回了,那如果查不到呢,我需要把这个circle下压到have里边是吧,那你要知道啊,咱们这个have是吧,它它原本的底层是跑这个MAP6的,他的速度比较慢啊,导致我这个用户呢,我写一个circle,我都不知道我这个circle是快还是慢啊,无法保证咱们这个用户对这个查询速度有这么一个一致的期望,很可能是吧,大多数查询我几秒内几秒内就访问结果了,而有部分查询,如果我这个售后查询到这个下压到这个have里边了是吧,那咱们就需要等到几分钟啊,几十分钟,因此啊,这个体验非常糟糕,所以说啊,这个路由层它默认是关闭的,但是啊,这个K的4.0。
08:02
我们这个官方建议是建议大家打开的,为啥?因为这个K04.0把这个查询引擎从这个have换成了Spark,而大家都知道啊,咱们这个死bug circle这个速度还是比较快的啊,因此啊,在K0420里边,我们这个官方建议大家开启路由层,因此啊在我这个课程里边,我有专门的一个章节,就是讲的这个K里如何设置咱们这个查询下压,也就是开启路由层这么一层。好吧,啊,在之前这个4.0以前啊,就比如说我们的K3.0版本啊,这个功能我们是不讲的,因为官方建议我们不开启,默认关闭,因为因为这个速度啊差异实在太大,而咱们这个4.0啊,它在这一块做了一个很大的提升,官方就建议大家可以开启咱们这么一个差询下压,也就是说使用路由层将咱们这个circle是吧,给它路由到哪啊,路由到咱们这个SPA circle里边,路由到们这个SPA circle去直接解析咱们这个have的语言数据,就可以做这么一个解析查询工作了,好吧,啊,那再往下啊,就是咱们的一个原数据管理啊这么一层啊me雷塔是吧,而咱们这个K的4.0,把咱们这个原数据存在咱咱们的MYS里边,好吧,这个K的原数据啊,它存的是什么呀?它存的是这个QB的一个原数据。
09:15
啊。因此这一层也是比较重要的,那最后一层呢,就是这么一个任务,构建引擎层,而咱们这个K420,它的构建引擎从咱们当初的MR替换为了Spark速度更快,使咱们这个用户能够快速得到我想要的一个QB的数据啊,我构建引擎最终把我得到的一个结果,我给它存放到我这个park的文件中,然后呢,这个park的文件放到我的HD上。好吧啊,然后呢,让这个用户可以更好的使用SPA circle去读取咱们这个pop的文件,也就是说咱们这个cub的一个数据,那整体看下来啊,咱们这个K04.0,它这么一个架构还是相当就设计的相当不错的,大家可以简单了解一下,好吧啊。
我来说两句