Kylin

简介:

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc.开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表;

kylin架构:

官方架构图:

从这张架构图上我们可以看出,kylin不需要集群,kylin只是把Hadoop中的溢写技术整合,把结果存到hbase中,我们部署kylin的时候只需要一台节点就行了,注意:当kylin的client端查询并发量比较大的时候,我们也是搭建集群模式来扩展读的能力;

Kylin的工作原理:

本质上是MOLAP(Multidimensional Online Analytical Processing)Cube,也就是多维立方体分析。kylin的核心思想就是预计算,即对多维分析可能用到的度量进行预计算,将计算好的结果保存成cube并存储到hbase中,供查询时直接使用,把高复杂度的聚合运算,多表连接等操作转换成对预计算结果的查询,这决定了kylin具有很好的快速查询和高并发能力;

hadoop/hive:kylin是一个MOLAP系统,将hive中的数据进行预计算,利用MR或者SPARK来进行实现,所以与计算的过程还是很慢的;

HBase:kylin用来存储OLAP分析的cube数据的地方,实现多维数据集的交互式查询

rest server:提供restful接口

query engine:使用开源的calcite框架实现sql的解析,是sql引擎层

routing:负责将解析生成的执行计划转换层cube缓存的查询

metadata:kylin中大部分元数据信息的存储

cube build engine:负责kylin预计算中创建cube

Kylin中专业名词解释:

事实表:用来记录具体事件的,包含每个事件的具体要素以及具体发生      的事情

维表:对事实表中事件的要素的描述信息

维度:观察数据的角度

度量:被聚合的统计值

cuboid:维度的任意组合

cube:所有的维度组合,包含所有的cuboid

多维数据分析模型:

(1):星型模型:一种多维的数据关系,由一张或多张事实表和一组维度表组成,所有的维表都直接连接到事实表上;

星型模型

(2):雪花模型:当由一个维表和多个维表没有直接连接到事实表,而是通过其他维表连接到事实表;

雪花模型

Cube构建流程:

(1):构建一个中间平表(Hive Table):将Model中的fact表和look up表构建成一个大的Flat Hive Table。

(2):重新分配Flat Hive Tables。

(3):从事实表中抽取维度的Distinct值。

(4):对所有维度表进行压缩编码,生成维度字典。

(5):计算和统计所有的维度组合,并保存,其中,每一种维度组合,称为一个Cuboid。

(6):创建HTable。

(7):构建最基础的Cuboid数据。

(8):利用算法构建N维到0维的Cuboid数据。

(9):构建Cube。

(10):将Cuboid数据转换成HFile。

(11):将HFile直接加载到HBase Table中。

(12):更新Cube信息。

(13):清理Hive。

kylin部署:

kylin的部署有两种方式:

1、单实例部署:在hadoop集群的一个节点上部署,然后启动即可。

部署特点:简单快捷,但是如果并发请求比较多(QPS>50),单台会成为瓶颈。

注意:必须启动mapreduce历史日志服务器:在kylin节点的hadoop的配置文件中的yarn-site.xml文件添加如下配置:

启动kylin之前需要把hadoop生态圈的东西,启动,Hdfs,yarn,Hbase,Hive,zookeeper,JobHistoryServer启动;

JobHistoryServer启动命令:mr-jobhistory-daemon.sh start historyserver

2、集群部署:

     集群模式只需要增加kylin的节点数,因为kylin的元数据是存储在hbase中的,只要在kylin中配置,保证每个kylin的节点能访问到同一份元数据即可(kylin.metadata.url相同),并且集群中只有一个运行任务引擎,其他实例都是查询引擎。kylin的集群模式还可以使用LB(nginx),实现访问请求的负载均衡

安装完成之后,kylin的bin目录如下所示:

kylin bin目录

kylin启动命令:kylin.sh start;

kylin停止命令:kylin.sh stop;

其中sample.sh是自带的一个测试脚本,我们可以运行一下,直接sample.sh,运行时会检查各种环境,出现如下界面表示成功;

;

Kylin使用教程:包括很多如下图;

你可能感兴趣的:(Kylin)