歡迎訪問個人GitHub
https://github.com/zq2599/blog_demosgit
內容:全部原創文章分類彙總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;程序員
本文是《CDH+Kylin三部曲》系列的終篇,先簡單回顧前面的內容:github
- 《CDH+Kylin三部曲之一:準備工做》:準備好機器、腳本、安裝包;
- 《CDH+Kylin三部曲之二:部署和設置》:完成CDH和Kylin部署,並在管理頁面作好相關的設置;
如今Hadoop、Kylin都就緒了,接下來實踐Kylin的官方demo;算法
Yarn參數設置
Yarn的內存參數設置以後必定要重啓Yarn使之生效,不然Kylin提交的任務是會因爲資源限制而沒法執行;sql
關於Kylin官方demo
- 下圖是官方demo的腳本的一部分(create_sample_tables.sql),基於HDFS數據建立Hive表:

- 經過腳本可見<font color="blue">KYLIN_SALES</font>爲事實表,其餘是維度表,而且KYLIN_ACCOUNT和KYLIN_COUNTRY存在關聯,所以維度模型符合Snowflake Schema;
導入樣例數據
- SSH登陸CDH服務器
- 切換到hdfs帳號:<font color="blue">su - hdfs</font>
- 執行導入命令:<font color="blue">${KYLIN_HOME}/bin/sample.sh</font>
- 導入成功,控制檯輸出以下:

檢查數據
- 檢查數據,執行<font color="blue">beeline</font>進入會話模式(hive官方推薦用<font color="blue">beeline</font>取代Hive CLI):

- 在beeline會話模式輸入連接URL:<font color="blue">!connect jdbc:hive2://localhost:10000</font>,按照提示輸入帳號<font color="blue">hdfs</font>,密碼直接回車:

- 用命令<font color="blue">show tables</font>查看當前的hive表,已建好:

- 查出訂單的最先和最晚時間,後面構建Cube的時候會用到,執行SQL:<font color="blue">select min(PART_DT), max(PART_DT) from kylin_sales;</font> ,可見最先<font color="blue">2012-01-01</font>,最晚<font color="blue">2014-01-01</font>,整個查詢耗時<font color="red">18.87秒</font>:

構建Cube:
數據準備完成,能夠構建Kylin Cube了:shell
- 登陸Kylin網頁:http://192.168.50.134:7070/kylin
- 加載Meta數據,以下圖:

- 以下圖紅框所示,數據加載成功:

- 在Model頁面能夠看到事實表和維度表,以下圖的操做能夠建立一個MapReduce任務,計算維度表KYLIN_ACCOUNT每一個列的基數(Cardinality):

- 去Yarn頁面(CDH服務器的8088端口),以下圖,可見有個MapReduce類型的任務正在執行中:

- 上述任務很快就能完成(10多秒),此時刷新Kylin頁面,可見<font color="blue">KYLIN_ACCOUNT</font>表的Cardinality數據已經計算完成了(hive查詢獲得ACCOUNT_ID數量是10000,但下圖的Cardinality值爲10420,Kylin對Cardinality的計算採用的是HyperLogLog的近似算法,與精確值有偏差,其餘四個字段的Cardinality與Hive查詢結果一致):

- 接下來開始構建Cube:

- 日期範圍,剛纔Hive查詢結果是<font color="blue">2012-01-01</font>到<font color="blue">2014-01-01</font>,注意截止日期要超過2014-01-01:

- 在Monitor頁面可見進度:

- 去Yarn頁面(CDH服務器的8088端口),能夠看到對應的任務和資源使用狀況:

- build完成後,會出現ready圖標:

查詢
- 先嚐試查詢交易的最先和最晚時間,這個查詢在Hive上執行的耗時是<font color="red">18.87秒</font>,以下圖,結果一致,耗時<font color="red">0.14秒</font>:

- 下面這個SQL是Kylin官方示例用來對比響應時間的,對訂單按日期聚合,再按日期排序,而後接下來分別用Kylin和Hive查詢:
select part_dt, sum(price) as total_sold, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt;
- Kylin查詢耗時<font color="red">0.13秒</font>:

- Hive查詢,結果相同,耗時<font color="red">40.196秒</font>:

- 最後來看下資源使用狀況,Cube構建過程當中,18G內存被使用:

至此,CDH+Kylin從部署到體驗就已完成,《CDH+Kylin三部曲》系列也結束了,若是您正在學習Kylin,但願本文可以給您一些參考。服務器
歡迎關注公衆號:程序員欣宸
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos