Kylin
1、Apache Kylin概览
1.1 什么是Kylin
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。
1.2 Kylin的简介
Kylin
的出现就是为了解决大数据系统中TB
级别数据的数据分析需求,它提供Hadoop/Spark
之上的SQL
查询接口及多维分析(OLAP
)能力以支持超大规模数据,它能在亚秒内查询巨大的Hive
表。其核心是预计算,计算结果存在HBase
中。
作为大数据分析神器,它也需要站在巨人的肩膀上,依赖HDFS
、MapReduce/Spark
、Hive/Kafka
、HBase
等服务。
1.3 Kylin的优势
Kylin
的主要优势为以下几点:
- 可扩展超快
OLAP
引擎:Kylin
是为减少在Hadoop/Spark
上百亿规模数据查询延迟而设计 Hadoop ANSI SQL
接口:Kylin
为Hadoop
提供标准SQL
支持大部分查询功能- 交互式查询能力:通过
Kylin
,用户可以与Hadoop
数据进行亚秒级交互,在同样的数据集上提供比Hive
更好的性能 - 多维立方体(
MOLAP Cube
):用户能够在Kylin
里为百亿以上数据集定义数据模型并构建立方体 - 与
BI
工具无缝整合:Kylin
提供与BI工具的整合能力,如Tableau
,PowerBI/Excel
,MSTR
,QlikSense
,Hue
和SuperSet
- 其它特性:
Job
管理与监控;压缩与编码;增量更新;利用HBase Coprocessor
;基于HyperLogLog
的Dinstinc Count
近似算法;友好的web
界面以管理,监控和使用立方体;项目及表级别的访问控制安全;支持LDAP
、SSO
1.4 基本原理
Kylin
的核心思想是预计算。
理论基础是:以空间换时间。即多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube
并存储到HBase
中,供查询时直接访问。
大致流程:将数据源(比如Hive
)中的数据按照指定的维度和指标,由计算引擎Mapreduce
离线计算出所有可能的查询结果(即Cube
)存储到HBase
中。HBase
中每行记录的Rowkey
由各维度的值拼接而成,度量会保存在column family
中。为了减少存储代价,这里会对维度和度量进行编码。查询阶段,利用HBase
列存储的特性就可以保证Kylin
有良好的快速响应和高并发
Apache Kylin的工作原理是对数据模型做Cube预计算,并利用计算的结果加速查询。具体工作过程如下:
指定数据模型,定义维度和度量
预计算Cube,计算所有Cuboid并保存为物化视图(存储到hbase中)
执行查询时,读取Cuboid,运算,产生查询结果
高效OLAP分析:
Kylin的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算
利用预计算的结果来执行查询,相比非预计算的查询技术,其速度一般要快一到两个数量级,在超大的数据集上优势更明显
数据集达到千亿乃至万亿级别时,Kylin的速度可以超越其他非预计算技术1000倍以上
1.5 维度和度量
维度就是观察数据的角度,例如:
- 电商的销售数据,可以从时间的维度来观察,也可以细化从时间和地区的维度来观察
- 统计时,可以把维度值相同的记录聚合在一起,然后应用聚合函数做累加、平均、去重计数等聚合计算
度量就是被聚合的统计值,也是聚合运算的结果
1.6 数据立方体
数据立方体只是多维模型的一个形象的说法
- 为什么叫立方体?
- 立方体本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度
- 为了与传统关系型数据库的二维表区别开来,才有了数据立方体的叫法
1.7 技术架构
-
数据源主要是Hadoop Hive,数据以关系表的形式输入,且必须符合星形模型,保存着待分析的用户数据。根据元数据的定义,构建引擎从数据源抽取数据,并构建Cube
-
Kylin可以使用MapReduce或者Spark作为构建引擎。构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储
-
完成了离线构建后,用户可以从上方查询系统发送SQL进行查询分析
-
Kylin提供了各种Rest API、JDBC/ODBC接口。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理
-
SQL语句是基于数据源的关系模型书写的,而不是Cube
- Kylin在设计时,刻意对查询用户屏蔽了Cube的概念
- 分析师只需要理解简单的关系模型就可以使用Kylin,没有额外的学习门槛,传统的SQL应用也很容易迁
- 查询引擎解析SQL,生成基于关系表的逻辑执行计划,然后将其转译为基于Cube的物理执行计划,最后查询预计算生成的Cube并产生结果,整个过程不会访问原始数据源
1.8 Kylin特点
Kylin的主要特点包括支持SQL接口、支持超大规模数据集、亚秒级响应、可伸缩性、高吞吐率、BI工具集成等。
1)标准SQL接口:Kylin是以标准的SQL作为对外服务的接口。
2)支持超大数据集:Kylin对于大数据的支撑能力可能是目前所有技术中最为领先的。早在2015年eBay的生产环境中就能支持百亿记录的秒级查询,之后在移动的应用场景中又有了千亿记录秒级查询的案例。
3)亚秒级响应:Kylin拥有优异的查询相应速度,这点得益于预计算,很多复杂的计算,比如连接、聚合,在离线的预计算过程中就已经完成,这大大降低了查询时刻所需的计算量,提高了响应速度。
4)可伸缩性和高吞吐率:单节点Kylin可实现每秒70个查询,还可以搭建Kylin的集群。
5)BI工具集成
Kylin可以与现有的BI工具集成,具体包括如下内容。
ODBC:与Tableau、Excel、PowerBI等工具集成
JDBC:与Saiku、BIRT等Java工具集成
RestAPI:与JavaScript、Web网页集成
Kylin开发团队还贡献了Zepplin的插件,也可以使用Zepplin来访问Kylin服务。
1.9 Kylin的总体架构
2、Kylin环境搭建
2.1 安装地址
1)官网地址
2)官方文档
http://kylin.apache.org/cn/docs/
3)下载地址
http://kylin.apache.org/cn/download/
2.2 安装部署
提示说明:启动kylin之前,要启动如下所有命令
hive --service metastore &
hive --service hiveserver2 &
mr-jobhistory-daemon.sh start historyserver
将其上传服务器(目录随意)
#解压文件
[root@node1 ~]# tar -zxvf apache-kylin-2.5.1-bin-hbase1x.tar.gz -C /usr/local/
# 修改名称
[root@node1 local]# mv apache-kylin-2.5.1-bin-hbase1x/ kylin-2.5.1
# 启动 注意:启动之前要将HADOOP_HOME,HIVE_HOME,HBASE_HOME,HIVE_CONF配置好环境变量
[root@node1 kylin-2.5.1]# ./bin/kylin.sh start
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msS2gQq7-1654304435820)(Kylin.assets/1619593891565.png)]
查看Web UI is at http://:7070/kylin
在http://qianfeng011:7070/kylin查看Web页面
输入用户名密码:用户名为:ADMIN,密码为:KYLIN(系统已填)
关闭:kylin.sh stop
3、基础入门操作
创建hive表
create table if not exists default.class1(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by ',';
create table if not exists default.student(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by ',';
进入hive添加数据
hive (default)> load data local inpath "/root/class1.txt" into table default.class1;
hive (default)> load data local inpath "/root/student.txt" into table default.student;
3.1 同步Hive表
创建project
同步hive数据
同步之前我们要查看Hive有哪些表
查看数据
<