Kylin

1 Kylin定义

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

一个免费开源的OLAP多维数据分析引擎

  1. 亚秒级响应,查询速度快
  2. 支持超大数据集(PB以上,千亿记录)
  3. 标准SQL接口,简单易用的即席查询工具
  4. 支持标准数据库协议,可以集成各种BI分析工具

2 Kylin术语

2.1 DataWarehouse(数据仓库)

数据仓库是一个各种数据(包括历史数据和当前数据)的中心存储系统,是BI(business intelligence,商业智能)的核心部件,这里所谈的数据包括来自企业业务系统的订单,库存,交易账目,客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其她外部环境中的各种数据

2.2 Business Intelligence(商业智能)

商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具,为了将数据转化为知识,需要利用数据仓库,联机分析处理(OLAP)工具和数据挖掘等技术

2.3 OLAP(online analytical processing)

OLAP是一种软件技术,它使分析人员能够迅速,一致,交互地从各个方面观察信息,以达到深入理解数据的目的,从各方面观察信息,也就是从不同的维度分析数据,因此OLAP也成为多维分析

OLAP类型:
ROLAP(Relational OLAP)
基于关系型数据库
不需要预计算

MOLAP(Multidimensional OLAP)
基于多维数据集
需要预计算

OLAP Cube
MOLAP基于多维数据集,一个多维数据集称为一个OLAP Cube

Cuboid
表示Cube中的一个角度

2.4 Star Schema(星型模型)

一张事实表,多张维度表组合而成的模型,维度表周围没有子表

数据冗余:星型模型允许一定程度的数据冗余,维度表中可能会有重复的信息,以减少查询时的表连接操作

查询效率:由于减少了表连接的数量,星型模型通常提供较快的查询响应时间,适合OLAP场景

可扩展性:虽然结构简单,但添加新的维度通常较为直接,只需将新维度表连接到事实表即可

雪花模型:

结构特点:
雪花模型在星型模型的基础上进行了进一步的正规化处理,维度表可能被分解为更小的表,形成层次结构(即一个维度表通过其它维度表连接到事实表),模型形状看起来像雪花

数据冗余:相较于星型模型,雪花模型通过分解维度表减少了数据冗余,使得每个表只包含直接相关的属性

查询效率:由于需要更多的表连接来完成查询,雪花模型的查询效率一般低于星型模型,尤其是在涉及多个维度的复杂查询时

可扩展性:虽然理论上雪花模型的结构更加规范,有利于清晰地表达复杂维度之间的关系,但是增加了查询复杂度和维护成本

应用选择:
选择星型模型还是雪花模型通常取决于具体的应用需求,数据量,查询性能要求以及对数据冗余的容忍度,在对查询性能要求极高且可以接受一定冗余的OLAP环境中,星型模型更为常见,而在对数据完整性和存储空间敏感,且查询复杂度可以接受较低性能损失的情况下,雪花模型可能更合适,实践中,星型模型因其简单性和高效查询性能,在数据仓库设计中更为广泛采用

2.4 维度(Dimension)和度量(Measure)

维度:分析数据的角度,比如:下单地区、下单品类、下单时间
度量:被分析的指标,比如:订单金额

2.5 事实表和维度表

 事实表是储存有事实记录的表,例如日志就是一种事实表,它一般在不断的动态增长,所以它的体积通常很大
 维度表是对应事实表的一种体现,保存了维度值,可以关联上事实表,相当于把事实表精细处理,然后生成的一张表

3 Kylin架构

REST Server(REST 服务层)
Query Engine(查询引擎为Spark)
Routing(路由层)
Metadata(元数据存储在Mysql中)
Cube Build Engine(构建引擎为Spark)

REST Server是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作,此类应用程序可以提供查询,获取结果,触发cube构建任务,获取元数据以及获取用户权限等等,另外可以通过Restful接口实现SQL查询

当cube准备就绪后,查询引擎就能够获取并解析用户查询,它随后会与系统中的其它组件进行交互,从而向用户返回对应的结果,Kylin4.0将Spark作为查询引擎

路由层:
在最初设计时曾考虑过将Kylin不能执行的查询引导去Hive中继续执行,但在实践后发现Hive与Kylin的速度差异过大,导致用户无法对查询的速度有一致的期望,很可能大多数查询几秒内就返回结果了,而有些查询则要等几分钟到几十分钟,因此体验非常糟糕,最后这个路由功能在发行版中默认关闭

元数据管理工具:
Kylin是一款元数据驱动型应用程序,元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据,其它全部组件的正常运作都需以元数据管理工具为基础,Kylin4.0的元数据存储在Mysql中

任务构建引擎:
Kylin的构建引擎从MR替换为Spark,速度更快,使用户能够快速得到想要的Cube数据,构建引擎最终得到的数据存放到Parquet文件当中,然后让用户可以更好的使用SparkSql查询引擎去读取Cube数据

4 Kylin特点

支持SQL接口,支持超大规模数据集,亚秒级响应,可伸缩性,高吞吐率,BI工具集成等

标准SQL接口:Kylin是以标准的SQL作为对外服务的接口
支持超大数据集:Kylin对于大数据的支撑能力可能是目前所有技术中最为领先的,早在2015年eBay的生产环境中就能支持百亿记录的秒级查询,之后在移动的应用场景中又有了千亿记录秒级查询的案例

亚秒级响应:Kylin拥有优异的查询响应速度,这点得益于预计算,很多复杂的计算,比如连接,聚合,在离线的预计算过程中就已经完成,这大大降低了查询时刻所需的计算量,提高了响应速度

可伸缩性和高吞吐率:单节点Kylin可实现每秒70个查询,还可以结合ZooKeeper分布式协调服务搭建Kylin集群,速度更快

BI工具集成
Kylin可以与现有的BI工具集成,具体包括如下内容:
ODBC:与Tableau,Excel,PowerBI等工具集成
JDBC:与Saiku,BIRT等Java工具集成

Kylin开发团队还贡献了Zepplin的插件,也可以使用Zepplin来访问Kylin服务

5 Kylin4.0的升级

采用了全新的Spark构建引擎和parquet作为存储,同时使用Spark作为查询引擎
Kylin4是完全基于Spark去做构建和查询的,能够充分地利用Spark的并行化,向量化和全局动态代码生成等技术,去提高大数据场景下查询的效率

数据存储:
kylin3.0是使用Hbase作为存储结构的,因此我们可以称为是Kylin on Hbase
kylin4.0完全砍掉了Hbase,底层使用了Parquet存储文件 ,因此可以称为Kylin on Parquet

Kylin on Hbase和 Kylin on Parquet的对比,Kylin on Hbase的Cuboid的数据是存放在Hbase的表里,一个Segment对应了一张Hbase表,查询下压的工作由Hbase协理器处理,因为Hbase不是真正的列存并且对OLAP而言吞吐量不高,Kylin4将Hbase替换为Parquet,也就是把所有的数据按照文件存储,每个Segment会存在一个对应的HDFS的目录,所有的查询,构建都是直接通过读写文件的方式,不用再经过Hbase,虽然对于小查询的性能会有一定损失,但对于复杂查询带来的提升是更可观的,更值得的

构建引擎
Kylin Cube的构建引擎,在Kylin3.0中,一般都会使用MR作为Cube构建引擎去逐层构建Cube,速度较慢,而在Kylin4.0中,将构建引擎换成了特定优化的Spark引擎,步骤也减少为了两大步,第一步进行资源探测,收集构建Cube所需要的元数据信息,第二步使用Spark引擎去计算和构建,有效的提升了Cube构建速度

查询引擎
Kylin3.0的查询完全依托于Calcite引擎和Hbase的协处理器,这就导致当数据从Hbase读取后,如果想做聚合,排序等,就会局限于QueryServer单点的瓶颈,而Kylin4则转换为基于SparkSQL的DataFrame作为查询引擎,得益于Spark的分布式查询机制,Kylin4.0的查询速度也有了不少的改善

6 Kylin环境搭建

Spark 3.1.1
Hadoop 3.2.0
Kylin 4.0.1
Hive 2.3.9

7 Kylin的启动和关闭

kylin.sh start

进程
bootstrap

在这里插入图片描述

访问:
http://master:7070/kylin

关闭:

kylin.sh stop

可以使用默认的用户登录
用户名:ADMIN
密码:KYLIN

8 BI工具集成

可以与Kylin结合使用的可视化工具有很多,例如:
ODBC:与Tableau、Excel、PowerBI等工具集成
JDBC:与Saiku、BIRT等java工具集成
RestAPI:与JavaScript、Web网页集成
Kylin开发团队还贡献了Zepplin的插件,也可以使用Zepplin来访问Kylin服务

8.1 JDBC

新建项目并导入依赖:

<dependencies>
	<dependency>
		<groupId>org.apache.kylin</groupId>
		<artifactId>kylin-jdbc</artifactId>
		<version>4.0.1</version>
	</dependency>
</dependencies>
public class KylinTest{
	public static void main(String[] args) throws Exception{
	// Kylin_JDBC驱动
	String KYLIN_DRIVER = "org.apache.kylin.jdbc.Driver";
	
	// Kylin_URL
	String KYLIN_URL = "jdbc:kylin://master:7070/FirstProject";
	
	//Kylin的用户名
	String KYLIN_USER = "ADMIN";

	//Kylin的密码
	String KYLIN_PASSWD = "KYLIN";

	//添加驱动信息
	Class.forName(KYLIN_DRIVER);

	//获取连接
	Connection connection = 			 DriverManager.getConnection(KYLIN_URL,KYLIN_USER,KYLIN_PASSWD);

	//预编译SQL
	PreparedStatement ps = connection.prepareStatement("select dname,sum(sal) from emp e join dept d on e.deptno = d.deptno group by dname");

	//执行查询
	ResultSet = resultSet = ps.executeQuery();

	//遍历打印
	while(resultSet.next()){
		System.out.println(resultSet.getString(1)+":"+resultSet.getDouble(2));
		}
		}
		}
		


8.2 Zeppelin

笔记式的BI工具
除了可以连接Kylin,还可以连接Flink、Spark、es、等

启动

bin/zeppelin-daemon.sh start

可登录网页查看,web默认端口号为8080
http://master:8080

修改端口号:

mv zeppelin-site.xml.template zeppelin-site.xml

修改zeppelin-site.xml文件

在这里插入图片描述

启动zeppelin,然后通过webui访问
打开interpreter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmoGP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值