CDH+Kylin三部曲之三:Kylin官方demo

  • 2020 年 10 月 24 日
  • 筆記

歡迎訪問我的GitHub

//github.com/zq2599/blog_demos

內容:所有原創文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

本文是《CDH+Kylin三部曲》系列的終篇,先簡單回顧前面的內容:

  1. 《CDH+Kylin三部曲之一:準備工作》:準備好機器、腳本、安裝包;
  2. 《CDH+Kylin三部曲之二:部署和設置》:完成CDH和Kylin部署,並在管理頁面做好相關的設置;

現在Hadoop、Kylin都就緒了,接下來實踐Kylin的官方demo;

Yarn參數設置

Yarn的內存參數設置之後一定要重啟Yarn使之生效,否則Kylin提交的任務是會由於資源限制而無法執行;

關於Kylin官方demo

  1. 下圖是官方demo的腳本的一部分(create_sample_tables.sql),基於HDFS數據創建Hive表:
    在這裡插入圖片描述
  2. 通過腳本可見KYLIN_SALES為事實表,其他是維度表,並且KYLIN_ACCOUNT和KYLIN_COUNTRY存在關聯,因此維度模型符合Snowflake Schema;

導入樣例數據

  1. SSH登錄CDH服務器
  2. 切換到hdfs賬號:su – hdfs
  3. 執行導入命令:${KYLIN_HOME}/bin/sample.sh
  4. 導入成功,控制台輸出如下:
    在這裡插入圖片描述

檢查數據

  1. 檢查數據,執行beeline進入會話模式(hive官方推薦用beeline取代Hive CLI):
    在這裡插入圖片描述
  2. 在beeline會話模式輸入鏈接URL:!connect jdbc:hive2://localhost:10000,按照提示輸入賬號hdfs,密碼直接回車:
    在這裡插入圖片描述
  3. 用命令show tables查看當前的hive表,已建好:
    在這裡插入圖片描述
  4. 查出訂單的最早和最晚時間,後面構建Cube的時候會用到,執行SQL:select min(PART_DT), max(PART_DT) from kylin_sales; ,可見最早2012-01-01,最晚2014-01-01,整個查詢耗時18.87秒
    在這裡插入圖片描述

構建Cube:

數據準備完成,可以構建Kylin Cube了:

  1. 登錄Kylin網頁://192.168.50.134:7070/kylin
  2. 加載Meta數據,如下圖:
    在這裡插入圖片描述
  3. 如下圖紅框所示,數據加載成功:
    在這裡插入圖片描述
  4. 在Model頁面可以看到事實表和維度表,如下圖的操作可以創建一個MapReduce任務,計算維度表KYLIN_ACCOUNT每個列的基數(Cardinality):
    在這裡插入圖片描述
  5. 去Yarn頁面(CDH服務器的8088端口),如下圖,可見有個MapReduce類型的任務正在執行中:
    在這裡插入圖片描述
  6. 上述任務很快就能完成(10多秒),此時刷新Kylin頁面,可見KYLIN_ACCOUNT表的Cardinality數據已經計算完成了(hive查詢得到ACCOUNT_ID數量是10000,但下圖的Cardinality值為10420,Kylin對Cardinality的計算採用的是HyperLogLog的近似算法,與精確值有誤差,其他四個字段的Cardinality與Hive查詢結果一致):
    在這裡插入圖片描述
  7. 接下來開始構建Cube:
    在這裡插入圖片描述
  8. 日期範圍,剛才Hive查詢結果是2012-01-012014-01-01,注意截止日期要超過2014-01-01:
    在這裡插入圖片描述
  9. 在Monitor頁面可見進度:
    在這裡插入圖片描述
  10. 去Yarn頁面(CDH服務器的8088端口),可以看到對應的任務和資源使用情況:
    在這裡插入圖片描述
  11. build完成後,會出現ready圖標:
    在這裡插入圖片描述

查詢

  1. 先嘗試查詢交易的最早和最晚時間,這個查詢在Hive上執行的耗時是18.87秒,如下圖,結果一致,耗時0.14秒
    在這裡插入圖片描述
  2. 下面這個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;
  1. Kylin查詢耗時0.13秒
    在這裡插入圖片描述
  2. Hive查詢,結果相同,耗時40.196秒
    在這裡插入圖片描述
  3. 最後來看下資源使用情況,Cube構建過程中,18G內存被使用:
    在這裡插入圖片描述
    至此,CDH+Kylin從部署到體驗就已完成,《CDH+Kylin三部曲》系列也結束了,如果您正在學習Kylin,希望本文能夠給您一些參考。

歡迎關注公眾號:程序員欣宸

微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢遊Java世界…
//github.com/zq2599/blog_demos