大数据分析平台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 v1.6.0正式发布 

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

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

$ cd /opt
$ wget
$ 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

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

Apache Kylin

使用Kylin

(一)添加新的项目

Apache Kylin

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

Apache Kylin

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

Apache Kylin

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

Apache Kylin

成功加载了resource表的数据

Apache Kylin

Apache Kylin

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

Apache Kylin

(二)创建model(模型)

Apache Kylin

新建model

Apache Kylin

编辑model名字和描述

Apache Kylin

选择数据表

Apache Kylin

接下来选择维度和度量,这是构建预计算模型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

选择要分析的度量字段

Apache Kylin

设置表中的时间字段

Apache Kylin

(三)创建cube(立方体)

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

Apache Kylin

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

Apache Kylin

选择度量。

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

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

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

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

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

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

Apache Kylin

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

(四)构建cube

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

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

Apache Kylin

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

Apache Kylin

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

Apache Kylin

(五)查询

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

Apache Kylin

Apache Kylin

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/02caa21e95ef637957ce2a7b8bf5b344.html