大数据分析平台Apache Kylin的部署(Cube构建使用)

前言
Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。它提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。

Kylin的理论基础:空间换时间。
Kylin从数据仓库中最常用的Hive中读取源数据,使用 MapReduce作为Cube构建的引擎,并把预计算结果保存在HBase中,对外暴露Rest API/JDBC/ODBC的查询接口。

部署Kylin
(一)下载安装
写这篇博客时,最新版为2.0.0 beta版,最新的正式版为1.6.0,所以我使用的1.6.0。
可以直接下载源码包编译安装,也可以根据自己的hadoop环境版本下载对应的二进制安装包。

大数据分析平台Apache Kylin的部署(Cube构建使用)

我使用的是HDP2.4.2,Hbase版本是1.1.2。直接下载的是二进制包安装。

$ cd /opt
$ wget http://ftp.tc.edu.tw/pub/Apache/kylin/apache-kylin-1.6.0/apache-kylin-1.6.0-hbase1.x-bin.tar.gz
$ tar xf apache-kylin-1.6.0-hbase1.x-bin.tar.gz
$ vim /etc/profile
export KYLIN_HOME=/opt/apache-kylin-1.6.0-hbase1.x-bin
$ source /etc/profile

(二)环境检查
$cd /opt/apache-kylin-1.6.0-hbase1.x-bin
$./bin/check-env.sh
KYLIN_HOME is set to /opt/apache-kylin-1.6.0-hbase1.x-binmkdir: Permission denied: user=root, access=WRITE, inode="/kylin":hdfs:hdfs:drwxr-xr-xfailed to create /kylin, Please make sure the user has right to access /kylin
 
#提示使用hdfs用户
#check-env.sh脚本执行的是检查本地hive,hbase,hadoop等环境情况。
#并会在hdfs中创建一个kylin的工作目录。
 
$ su hdfs
$ ./bin/check-env.sh 
KYLIN_HOME is set to /opt/apache-kylin-1.6.0-hbase1.x-bin
$ hadoop fs -ls /  #多了一个/kylin的目录drwxr-xr-x  - hdfs  hdfs            0 2017-01-19 10:08 /kylin

(三)启动
$ chown hdfs.hadoop /opt/apache-kylin-1.6.0-hbase1.x-bin 
$ ./bin/kylin.sh start
A new Kylin instance is started by hdfs, stop it using "kylin.sh stop"Please visit 
 You can check the log at /opt/apache-kylin-1.6.0-hbase1.x-bin/logs/kylin.log

(四)进入页面
http://localhost:7070/kylin
user:ADMIN    passwd:KYLIN

大数据分析平台Apache Kylin的部署(Cube构建使用)

使用Kylin

(一)添加新的项目

大数据分析平台Apache Kylin的部署(Cube构建使用)

给项目起一个名字,添加项目描述。

大数据分析平台Apache Kylin的部署(Cube构建使用)

给项目添加数据源(加载hive数据表)

大数据分析平台Apache Kylin的部署(Cube构建使用)

在数据源的页面,可以手动填写hive表名

大数据分析平台Apache Kylin的部署(Cube构建使用)

成功加载了resource表的数据

大数据分析平台Apache Kylin的部署(Cube构建使用)

大数据分析平台Apache Kylin的部署(Cube构建使用)

这时就可以看到对应表的字段属性。

大数据分析平台Apache Kylin的部署(Cube构建使用)

(二)创建model(模型)

大数据分析平台Apache Kylin的部署(Cube构建使用)

新建model

大数据分析平台Apache Kylin的部署(Cube构建使用)

编辑model名字和描述

大数据分析平台Apache Kylin的部署(Cube构建使用)

选择数据表

大数据分析平台Apache Kylin的部署(Cube构建使用)

接下来选择维度和度量,这是构建预计算模型cube中最为重要的两个属性。

度量: 度量是具体考察的聚合数量值,例如:销售数量、销售金额、人均购买量。计算机一点描述就是在SQL中就是聚合函数。

例如:select cate,count(1),sum(num) from fact_table where date>’20161112’ group by cate;

count(1)、sum(num)是度量

维度: 维度是观察数据的角度。例如:销售日期、销售地点。计算机一点的描述就是在SQL中就是where、group by里的字段

例如:select cate,count(1),sum(num) from fact_table where date>’20161112’ group by cate;

date、cate是维度

选择要分析的维度字段

大数据分析平台Apache Kylin的部署(Cube构建使用)

选择要分析的度量字段

大数据分析平台Apache Kylin的部署(Cube构建使用)

设置表中的时间字段

大数据分析平台Apache Kylin的部署(Cube构建使用)

(三)创建cube(立方体)

Cube构建需要依赖前面创建的model。选择model,设置cube名。

大数据分析平台Apache Kylin的部署(Cube构建使用)

从上面model设置的维度字段中选择你需要分析的字段。

大数据分析平台Apache Kylin的部署(Cube构建使用)

选择度量。

第一个_COUNT_是默认要计算的。

第二个COUNT_DISTINCT,可以去重计算得到有多少个IP地址,即通常的UV。

(COUNT_DISTINCT计算时是有精确度选择的,计算越精准需要的时间就越长)

第三个TOP_N,是用来计算排名的。

第四个MAX,是用来计算最大值的

还有其他的MIN,SUM等各种计算表达式。

大数据分析平台Apache Kylin的部署(Cube构建使用)

后面的几个基本上就没有什么要设置的了,直接Next了,最后保存cube就好了。

(四)构建cube

创建好cube之后,我们只是得到了一个计算模型。需要将数据按照我们设定的模型去计算,才能得到相应的结果。

下面开始构建cube,在Action中选择Build

大数据分析平台Apache Kylin的部署(Cube构建使用)

选择要构建的时间范围(如果数据是持续写入hive表,那么可以使用cube持续构建)

大数据分析平台Apache Kylin的部署(Cube构建使用)

进入Monitor中查看正在构建的Cube,和历史构建的cube

大数据分析平台Apache Kylin的部署(Cube构建使用)

(五)查询

cube构建成功后,数据就已经计算过,并将计算结果存储到了Hbase。那么这时候我们可以使用SQL在kylin中进行查询。

大数据分析平台Apache Kylin的部署(Cube构建使用)

大数据分析平台Apache Kylin的部署(Cube构建使用)

比较一下在kylin中查询和直接在hive中查询的速度。

执行一个group by order by的查询。

SQL:select ip, max(loadmax)  as loadmax,max(connectmax) as connectmax, max(eth0max) as eth0max, max(eth1max) as eth1max ,max(rospace) as rospace,max(team) as team  from resource  group by ip order by loadmax asc ;

在Kylin预计算之后,这条查询只用了0.11s

大数据分析平台Apache Kylin的部署(Cube构建使用)

直接在hive中进行计算时间是30.05s

大数据分析平台Apache Kylin的部署(Cube构建使用)

时间相差270倍!!!

(六)样例数据

#kylin自带一个样例,包含1w条数据的样本

$ ./bin/sample.sh
Sample cube is created successfully in project 'learn_kylin'.
Restart Kylin server or reload the metadata from web UI to see the change.
$ ./bin/kylin.sh stop
stopping Kylin:15334
$ ./bin/kylin.sh start

可以在Kylin中看到learn_kylin这个项目。并且有创建好的model和cube,可以供参考和学习。

大数据分析平台Apache Kylin的部署(Cube构建使用)

 

相关推荐