歡迎訪問我的GitHub
https://github.com/zq2599/blog_demos
內容:所有原創文章分類匯總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;
本文是《CDH+Kylin三部曲》系列的終篇,先簡單回顧前面的內容:
- 《CDH+Kylin三部曲之一:準備作業》:準備好機器、腳本、安裝包;
- 《CDH+Kylin三部曲之二:部署和設定》:完成CDH和Kylin部署,并在管理頁面做好相關的設定;
現在Hadoop、Kylin都就緒了,接下來實踐Kylin的官方demo;
Yarn引數設定
Yarn的記憶體引數設定之后一定要重啟Yarn使之生效,否則Kylin提交的任務是會由于資源限制而無法執行;
關于Kylin官方demo
- 下圖是官方demo的腳本的一部分(create_sample_tables.sql),基于HDFS資料創建Hive表:

- 通過腳本可見KYLIN_SALES為事實表,其他是維度表,并且KYLIN_ACCOUNT和KYLIN_COUNTRY存在關聯,因此維度模型符合Snowflake Schema;
匯入樣例資料
- SSH登錄CDH服務器
- 切換到hdfs賬號:su - hdfs
- 執行匯入命令:${KYLIN_HOME}/bin/sample.sh
- 匯入成功,控制臺輸出如下:

檢查資料
- 檢查資料,執行beeline進入會話模式(hive官方推薦用beeline取代Hive CLI):

- 在beeline會話模式輸入鏈接URL:!connect jdbc:hive2://localhost:10000,按照提示輸入賬號hdfs,密碼直接回車:

- 用命令show tables查看當前的hive表,已建好:

- 查出訂單的最早和最晚時間,后面構建Cube的時候會用到,執行SQL:select min(PART_DT), max(PART_DT) from kylin_sales; ,可見最早2012-01-01,最晚2014-01-01,整個查詢耗時18.87秒:

構建Cube:
資料準備完成,可以構建Kylin Cube了:
- 登錄Kylin網頁:http://192.168.50.134:7070/kylin
- 加載Meta資料,如下圖:

- 如下圖紅框所示,資料加載成功:

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

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

- 上述任務很快就能完成(10多秒),此時重繪Kylin頁面,可見KYLIN_ACCOUNT表的Cardinality資料已經計算完成了(hive查詢得到ACCOUNT_ID數量是10000,但下圖的Cardinality值為10420,Kylin對Cardinality的計算采用的是HyperLogLog的近似演算法,與精確值有誤差,其他四個欄位的Cardinality與Hive查詢結果一致):

- 接下來開始構建Cube:

- 日期范圍,剛才Hive查詢結果是2012-01-01到2014-01-01,注意截止日期要超過2014-01-01:

- 在Monitor頁面可見進度:

- 去Yarn頁面(CDH服務器的8088埠),可以看到對應的任務和資源使用情況:

- build完成后,會出現ready圖示:

查詢
- 先嘗試查詢交易的最早和最晚時間,這個查詢在Hive上執行的耗時是18.87秒,如下圖,結果一致,耗時0.14秒:

- 下面這個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查詢耗時0.13秒:

- Hive查詢,結果相同,耗時40.196秒:

- 最后來看下資源使用情況,Cube構建程序中,18G記憶體被使用:

至此,CDH+Kylin從部署到體驗就已完成,《CDH+Kylin三部曲》系列也結束了,如果您正在學習Kylin,希望本文能夠給您一些參考,
歡迎關注公眾號:程式員欣宸
微信搜索「程式員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/189488.html
標籤:Java
上一篇:王者榮耀為什么不使用微服務架構?
