大數據分析平臺Apache Kylin的部署(Cube構建使用)

前言node

Apache Kylin是一個開源的分佈式分析引擎,最初由eBay開發貢獻至開源社區。它提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持大規模數據,可以處理TB乃至PB級別的分析任務,可以在亞秒級查詢巨大的Hive表,並支持高併發。web


Kylin的理論基礎:空間換時間。apache

Kylin從數據倉庫中最經常使用的Hive中讀取源數據,使用 MapReduce做爲Cube構建的引擎,並把預計算結果保存在HBase中,對外暴露Rest API/JDBC/ODBC的查詢接口。vim




部署Kylinbash

(一)下載安裝併發

寫這篇博客時,最新版爲2.0.0 beta版,最新的正式版爲1.6.0,因此我使用的1.6.0。分佈式

能夠直接下載源碼包編譯安裝,也能夠根據本身的hadoop環境版本下載對應的二進制安裝包。ide

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.gifwKioL1jTO_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裏的字段

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

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

相關文章
相關標籤/搜索