您好,登錄后才能下訂單哦!
前言
Apache Kylin是一個開源的分布式分析引擎,最初由eBay開發(fā)貢獻至開源社區(qū)。它提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持大規(guī)模數(shù)據(jù),能夠處理TB乃至PB級別的分析任務(wù),能夠在亞秒級查詢巨大的Hive表,并支持高并發(fā)。
Kylin的理論基礎(chǔ):空間換時間。
Kylin從數(shù)據(jù)倉庫中最常用的Hive中讀取源數(shù)據(jù),使用 MapReduce作為Cube構(gòu)建的引擎,并把預(yù)計算結(jié)果保存在HBase中,對外暴露Rest API/JDBC/ODBC的查詢接口。
部署Kylin
(一)下載安裝
寫這篇博客時,最新版為2.0.0 beta版,最新的正式版為1.6.0,所以我使用的1.6.0。
可以直接下載源碼包編譯安裝,也可以根據(jù)自己的hadoop環(huán)境版本下載對應(yīng)的二進制安裝包。
我使用的是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
(二)環(huán)境檢查
$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腳本執(zhí)行的是檢查本地hive,hbase,hadoop等環(huán)境情況。 #并會在hdfs中創(chuàng)建一個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
使用Kylin
(一)添加新的項目
給項目起一個名字,添加項目描述。
給項目添加數(shù)據(jù)源(加載hive數(shù)據(jù)表)
在數(shù)據(jù)源的頁面,可以手動填寫hive表名
成功加載了resource表的數(shù)據(jù)
這時就可以看到對應(yīng)表的字段屬性。
(二)創(chuàng)建model(模型)
新建model
編輯model名字和描述
選擇數(shù)據(jù)表
接下來選擇維度和度量,這是構(gòu)建預(yù)計算模型cube中最為重要的兩個屬性。
度量: 度量是具體考察的聚合數(shù)量值,例如:銷售數(shù)量、銷售金額、人均購買量。計算機一點描述就是在SQL中就是聚合函數(shù)。
例如:select cate,count(1),sum(num) from fact_table where date>’20161112’ group by cate;
count(1)、sum(num)是度量
維度: 維度是觀察數(shù)據(jù)的角度。例如:銷售日期、銷售地點。計算機一點的描述就是在SQL中就是where、group by里的字段
例如:select cate,count(1),sum(num) from fact_table where date>’20161112’ group by cate;
date、cate是維度
選擇要分析的維度字段
選擇要分析的度量字段
設(shè)置表中的時間字段
(三)創(chuàng)建cube(立方體)
Cube構(gòu)建需要依賴前面創(chuàng)建的model。選擇model,設(shè)置cube名。
從上面model設(shè)置的維度字段中選擇你需要分析的字段。
選擇度量。
第一個_COUNT_是默認(rèn)要計算的。
第二個COUNT_DISTINCT,可以去重計算得到有多少個IP地址,即通常的UV。
(COUNT_DISTINCT計算時是有精確度選擇的,計算越精準(zhǔn)需要的時間就越長)
第三個TOP_N,是用來計算排名的。
第四個MAX,是用來計算最大值的
還有其他的MIN,SUM等各種計算表達式。
后面的幾個基本上就沒有什么要設(shè)置的了,直接Next了,最后保存cube就好了。
(四)構(gòu)建cube
創(chuàng)建好cube之后,我們只是得到了一個計算模型。需要將數(shù)據(jù)按照我們設(shè)定的模型去計算,才能得到相應(yīng)的結(jié)果。
下面開始構(gòu)建cube,在Action中選擇Build
選擇要構(gòu)建的時間范圍(如果數(shù)據(jù)是持續(xù)寫入hive表,那么可以使用cube持續(xù)構(gòu)建)
進入Monitor中查看正在構(gòu)建的Cube,和歷史構(gòu)建的cube
(五)查詢
cube構(gòu)建成功后,數(shù)據(jù)就已經(jīng)計算過,并將計算結(jié)果存儲到了Hbase。那么這時候我們可以使用SQL在kylin中進行查詢。
比較一下在kylin中查詢和直接在hive中查詢的速度。
執(zhí)行一個group by order by的查詢。
SQL:select ip, max(loadmax) as loadmax,max(connectmax) as connectmax, max(eth0max) as eth0max, max(eth2max) as eth2max ,max(rospace) as rospace,max(team) as team from resource group by ip order by loadmax asc ;
在Kylin預(yù)計算之后,這條查詢只用了0.11s
直接在hive中進行計算時間是30.05s
時間相差270倍?。?!
(六)樣例數(shù)據(jù)
#kylin自帶一個樣例,包含1w條數(shù)據(jù)的樣本
$ ./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這個項目。并且有創(chuàng)建好的model和cube,可以供參考和學(xué)習(xí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。