加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 03:16:50 所属栏目:大数据 来源:网络整理
导读:前言 Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。它提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。 Kylin的理论基础:

前言

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环境版本下载对应的二进制安装包。

wKiom1jTNR_zbVGsAAAyHSX0Av0500.png

我使用的是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

wKiom1jTOtOROq2-AACIIqwxRIo831.png



使用Kylin

(一)添加新的项目

wKioL1jTOy-TZzRWAADgXO10mYo421.png




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

wKiom1jTO2SR4OVNAABRNBP1A6E676.png




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

wKioL1jTO5_gPqyGAAB-9jK1-G8142.png





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

wKiom1jTO9fxgtsHAABfLKfrSXY369.png




成功加载了resource表的数据

spacer.gif

wKioL1jTO_jyWe8WAABdV5hHZDw830.png




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

wKiom1jTPCfxXiRZAAIzrVVB06c793.png





(二)创建model(模型)

spacer.gif

新建model

wKiom1jTPIuRANBBAABzcU3tgGQ082.png



编辑model名字和描述

wKioL1jTPNDB9l6ZAAB2lcWF7AE005.png




选择数据表

wKiom1jTPRPzR8Z5AACdOdJjVCM928.png


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

date、cate是维度


选择要分析的维度字段

wKiom1jTPcyQnoiSAAB_NIbvRh4463.png




选择要分析的度量字段

wKioL1jTPlXBhD8gAABoCT7DUCA453.png




设置表中的时间字段

wKioL1jTPpmTuUCZAACWko8DBBQ411.png







(三)创建cube(立方体)

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

wKiom1jTPdfyktYGAADGQDAAdX0343.png



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

wKioL1jTPdribzGHAAEuwOqE0wo675.png




选择度量。

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

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

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

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

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


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

wKiom1jTQdCinTBlAADfPcjBRXk821.png

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





四)构建cube

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


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

wKioL1jTP3mQ7zjVAAC6uE0yoIk711.png



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

wKiom1jTQ7rRMgMQAABWhrDmyTs552.png




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

wKiom1jTRO2SPT5qAAFRR5KTTIw375.png




(五)查询

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

wKioL1jTP3rxgZFJAABtaUT0q88272.png

wKioL1jTRh-QJQ2WAAECFSogWWs087.png


比较一下在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

wKioL1jTP3zwXWRFAAEywQK5mjE521.png



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

wKioL1jTR6iS7WSjAABOWUJ9920516.png




时间相差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,可以供参考和学习。

wKiom1jTVcnwzJvYAACRvOWG7uc671.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读