CDH+Kylin三部曲之三:Kylin官方demo
- 2020 年 10 月 24 日
- 筆記
歡迎訪問我的GitHub
//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網頁://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世界…
//github.com/zq2599/blog_demos