分散式大資料多維分析(OLAP)引擎Apache Kylin安裝配置及使用示例
Apache Kylin是一個開源的分散式分析引擎,提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay 開發並貢獻至開源社群。它能在亞秒內查詢巨大的Hive表。
Kylin OLAP引擎基礎框架,包括元資料(Metadata)引擎,查詢引擎,Job引擎及儲存引擎等,同時包括REST伺服器以響應客戶端請求;
支援額外功能和特性的外掛;
與排程系統,ETL,監控等生命週期管理系統的整合;
在Kylin核心之上擴充套件的第三方使用者介面;
官網地址:http://kylin.apache.org/
提供了主要功能及使用的中文文件。
Kylin的架構特性
可擴充套件的超快OLAP引擎,提供標準SQL查詢介面
支援單機或叢集部署,為減少在Hadoop上百億規模資料查詢延遲而設計;
提供標準SQL介面,滿足Hadoop之上的大部分分析查詢需求。
互動式查詢能力,多維立方體(MOLAP Cube)
使用者能夠在Kylin裡為百億以上資料集定義資料模型並構建立方體。
與BI工具及其他應用整合
提供JDBC及ODBC驅動,與BI工具整合。
其他特性
壓縮與編碼;
增量更新;
利用HBase Coprocessor;
基於HyperLogLog的Dinstinc Count近似演算法;
友好的web介面以管理,監控和使用立方體;
專案及立方體級別的訪問控制安全;
支援LDAP;
Kylin的安裝部署
下載地址:http://kylin.apache.org/download/
apache-kylin-1.5.1-bin.tar.gz
解壓至:/home/liuxiaowen/kylin
安裝部署環境
我這裡使用的相關版本為:
hbase-0.98.6-cdh5.2.0
hadoop-2.3.0-cdh5.0.0
apache-hive-2.0.0-bin
apache-kylin-1.5.1-bin
jdk1.7+
特別注意:Hive應該使用至少0.14以上的版本,我第一次使用0.13.1時候有問題。
另外,請確保Hadoop、HBase、Hive可用,這裡不介紹。
配置環境變數
部署使用的使用者為liuxiaowen
vi ~/.bash_profile
- ##HBASE
- export HBASE_HOME=/opt/hbase-0.98.6-cdh5.2.0
- export HBASE_CONF_DIR=/etc/hbase/conf
- ##HADOOP
- export HADOOP_HOME=/opt/hadoop-2.3.0-cdh5.0.0
- export HADOOP_CONF_DIR=/etc/hadoop/conf
- export YARN_CONF_DIR=/etc/hadoop/conf
- ##HIVE
- export HIVE_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin
- export HCAT_HOME=$HIVE_HOME/hcatalog
- export HIVE_CONF=$HIVE_HOME/conf
- ##KYLIN
- export KYLIN_HOME=/home/liuxiaowen/kylin/apache-kylin-1.5.1-bin
重新整理環境變數:
source ~/.bash_profile
配置Kylin使用的Hive資料庫:
cd $KYLIN_HOME/conf
vi kylin.properties
# Hive database name for putting the intermediate flat tables
## 這裡配置在Hive中使用的schema,需要寫許可權
kylin.job.hive.database.for.intermediatetable=liuxiaowen
使用HDFS超級使用者在HDFS上為Kylin建立工作目錄,並賦權給liuxiaowen:
hadoop fs -mkdir /kylin
hadoop fs -chown -R liuxiaowen:liuxiaowen /kylin
## 可選,配置Kylin使用的記憶體
$KYLIN_HOME/bin/setenv.sh
檢查環境配置
cd $KYLIN_HOME/bin
./check-env.sh
啟動Kylin
cd $KYLIN_HOME/bin
./kylin.sh start
登陸Kylin WEB介面
瀏覽器輸入:
http://172.16.212.17:7070/kylin
使用者名稱密碼:ADMIN/KYLIN
遇到的幾個問題
都是因為使用了Hive0.13.1引起的:
- Causedby: java.lang.IncompatibleClassChangeError:
- Foundinterface org.apache.hadoop.mapreduce.JobContext, but class was expected
hcatalog版本問題,後改為Hive2.0中的hcatalog
export HCAT_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin/hcatalog
- java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/Utils
Kylin的簡單示例
Kylin中多維分析Cube的建立主要包括以下步驟:
- Hive中分析好事實表;
- Kylin中建立專案(project);
- Kylin中建立資料來源;
- Kylin中建立資料模型;
- Kylin中建立Cube;
- Build Cube;
- 查詢Cube;
Kylin按照上面的過程,最終將Hive中的事實表按照相應的結構,壓縮並存儲在HBase中。
官網提供了中文文件,說明了如何在Kylin中建立Cube,非常詳細:
http://kylin.apache.org/cn/docs15/tutorial/create_cube.html
Hive中的事實表
事實表lxw1234_kylin_fact中的維度有day、region、city、siteid、os;最終查詢的指標有兩個:PV以及UV(COUNT DISTINCT cookieid)
Kylin中建立資料模型
1. 建立專案lxw1234;
2. 將Hive中的事實表 lxw1234_kylin_fact匯入到Kylin資料來源:
3. 建立資料模型lxw1234_dataModel:
選擇維度資料:
選擇指標資料:
其他設定:
資料模型中的日期分割槽欄位貌似是必選的,否則會有問題。
然後儲存。
Kylin中建立Cube
設計維度:
設計指標:
其中,UV使用的COUNT_DISTINCT是近似計算,需要選擇錯誤率,錯誤率越低,佔用的儲存越大,Build耗時越長。
其他設定請參考上面給的中文文件連結,很詳細。
設定好之後儲存。
Kylin中Build Cube
在Cube後面的Actions下拉選單中選擇Build:
Submit之後,在Monitor頁面中可以看到Build Job的進度和狀態:
雙擊Job Name進入該Job的詳細監控頁:
Build完成後,在Model頁面可以看到這個Cube已經是READY狀態:
你可以在HBase中檢視該Cube對應的HTable:
Kylin中使用SQL查詢
在Insight頁面中使用SQL查詢:
注意:由於DAY是關鍵字,需要使用雙引號。