Kylin 初入門 | 從下載安裝到體驗查詢

本文旨在爲 Kylin 新手用戶提供一份從下載安裝到體驗亞秒級查詢的完整流程。文章分爲兩個部分,分別介紹了有 Hadoop 環境(基於 Hadoop 環境的安裝)和沒有 Hadoop 環境(從 Docker 鏡像安裝)兩種場景下 Kylin的安裝使用,用戶可以根據自己的環境選擇其中的任意一種方式。

用戶可以按照文章裏的步驟對 Kylin 進行初步的瞭解和體驗,掌握 Kylin 的基本使用技能,然後結合自己的業務場景使用 Kylin 來設計模型,加速查詢。

 

 

01 從 Docker 鏡像安裝使用 Kylin

爲了讓用戶方便地試用 Kylin,螞蟻金服的朱衛斌同學向社區貢獻了「Kylin Docker Image」。該鏡像中,Kylin 依賴的各個服務均已正確的安裝及部署,包括:

  • Jdk 1.8
  • Hadoop 2.7.0
  • Hive 1.2.1
  • Hbase 1.1.2
  • Spark 2.3.1
  • Zookeeper 3.4.6
  • Kafka 1.1.1
  • Mysql
  • Maven 3.6.1

我們已將面向用戶的 Kylin 鏡像上傳至 Docker 倉庫,用戶無需在本地構建鏡像,只需要安裝 Docker,就可以體驗 Kylin 的一鍵安裝。

Step 1.
首先執行以下命令從 Docker 倉庫 pull 鏡像:

docker pull apachekylin/apache-kylin-standalone:3.0.1

此處的鏡像包含的是 Kylin 最新版本 Kylin v3.0.1。由於該鏡像中包含了所有 Kylin 依賴的大數據組件,所以拉取鏡像需要的時間較長,請耐心等待。Pull 成功後顯示如下:

pull_docker

Step 2.

執行以下命令來啓動容器:

docker run -d \
-m 8G \
-p 7070:7070 \
-p 8088:8088 \
-p 50070:50070 \
-p 8032:8032 \
-p 8042:8042 \
-p 16010:16010 \
apachekylin/apache-kylin-standalone:3.0.1

容器會很快啓動,由於容器內指定端口已經映射到本機端口,可以直接在本機瀏覽器中打開各個服務的頁面,如:

  • Kylin 頁面:http://127.0.0.1:7070/kylin/
  • Hdfs NameNode 頁面:http://127.0.0.1:50070
  • Yarn ResourceManager 頁面:http://127.0.0.1:8088
  • HBase 頁面:http://127.0.0.1:60010

容器啓動時,會自動啓動以下服務:

  • NameNode, DataNode
  • ResourceManager, NodeManager
  • HBase
  • Kafka
  • Kylin

並自動運行 $KYLIN_HOME/bin/sample.sh 及在 Kafka 中創建 kylin_streaming_topic topic 並持續向該 topic 中發送數據。這是爲了讓用戶啓動容器後,就能體驗以批和流的方式的方式構建 Cube 並進行查詢。

用戶可以通過 docker exec 命令進入容器,容器內相關環境變量如下:

  • JAVA_HOME=/home/admin/jdk1.8.0_141
  • HADOOP_HOME=/home/admin/hadoop-2.7.0
  • KAFKA_HOME=/home/admin/kafka_2.11-1.1.1
  • SPARK_HOME=/home/admin/spark-2.3.1-bin-hadoop2.6
  • HBASE_HOME=/home/admin/hbase-1.1.2
  • HIVE_HOME=/home/admin/apache-hive-1.2.1-bin
  • KYLIN_HOME=/home/admin/apache-kylin-3.0.0-alpha2-bin-hbase1x

登陸 Kylin 後,用戶可以使用 sample cube 來體驗 cube 的構建和查詢,也可以按照下面“基於 Hadoop 環境安裝使用 Kylin ”中從 Step 8 之後的教程來創建並查詢屬於自己的 model 和 cube。

 

 

02 基於 Hadoop 環境安裝使用 Kylin

對於已經有穩定 Hadoop 環境的用戶,可以下載 Kylin 的二進制包將其部署安裝在自己的 Hadoop 集羣。安裝之前請根據以下要求進行環境檢查。

環境檢查

(1)前置條件:

Kylin 依賴於 Hadoop 集羣處理大量的數據集。你需要準備一個配置好 HDFS,YARN,MapReduce,Hive, HBase,Zookeeper 和其他服務的 Hadoop 集羣供 Kylin 運行。

Kylin 可以在 Hadoop 集羣的任意節點上啓動。方便起見,你可以在 master 節點上運行 Kylin。但爲了更好的穩定性,我們建議你將 Kylin 部署在一個乾淨的 Hadoop client 節點上,該節點上 Hive,HBase,HDFS 等命令行已安裝好且 client 配置(如 core-site.xml,hive-site.xml,hbase-site.xml及其他)也已經合理的配置且其可以自動和其它節點同步。

運行 Kylin 的 Linux 賬戶要有訪問 Hadoop 集羣的權限,包括創建/寫入 HDFS 文件夾,Hive 表, HBase 表和提交 MapReduce 任務的權限。

(2)硬件要求:

運行 Kylin 的服務器建議最低配置爲 4 core CPU,16 GB 內存和 100 GB 磁盤。

(3)操作系統要求:

CentOS 6.5+ 或 Ubuntu 16.0.4+

(4)軟件要求:

Hadoop 2.7+,3.0-3.1

Hive 0.13+,1.2.1+

HBase 1.1+,2.0(從 Kylin 2.5 開始支持)

JDK: 1.8+

建議使用集成的 Hadoop 環境進行 Kylin 的安裝與測試,比如 Hortonworks HDP 或 Cloudera CDH ,Kylin發佈前在 Hortonworks HDP 2.2-2.6 and 3.0, Cloudera CDH 5.7-5.11 and 6.0,AWS EMR 5.7-5.10,Azure HDInsight 3.5-3.6 上測試通過。 

安裝使用

當你的環境滿足上述前置條件時 ,你可以開始安裝使用 Kylin。

Step 1. 下載 Kylin 壓縮包

從 https://kylin.apache.org/download/ 下載一個適用於你的 Hadoop 版本的二進制文件。目前最新版本是 Kylin 3.0.1和 Kylin 2.6.5,其中 3.0 版本支持實時攝入數據進行預計算的功能。如果你的 Hadoop 環境是 CDH 5.7,可以使用如下命令行下載 Kylin 3.0.0:

cd /usr/local/
wget http://apache.website-solution.net/kylin/apache-kylin-3.0.0/apache-kylin-3.0.0-bin-cdh57.tar.gz

Step 2. 解壓 Kylin

解壓下載得到的 Kylin 壓縮包,並配置環境變量 KYLIN_HOME 指向解壓目錄:

tar -zxvf  apache-kylin-3.0.0-bin-cdh57.tar.gz
cd apache-kylin-3.0.0-bin-cdh57
export KYLIN_HOME=`pwd`

Step 3. 下載 Spark

由於 Kylin 啓動時會對 Spark 環境進行檢查,所以你需要設置 SPARK_HOME:

export SPARK_HOME=/path/to/spark

如果你沒有已經下載好的 Spark 環境,也可以使用 Kylin 自帶腳本下載 Spark:

$KYLIN_HOME/bin/download-spark.sh

腳本會將解壓好的Spark放在 $KYLIN_HOME 目錄下,如果系統中沒有設置 SPARK_HOME,啓動 Kylin 時會自動找到 $KYLIN_HOME 目錄下的 Spark。

Step 4. 環境檢查

Kylin 運行在 Hadoop 集羣上,對各個組件的版本、訪問權限及 CLASSPATH 等都有一定的要求,爲了避免遇到各種環境問題,你可以運行 $KYLIN_HOME/bin/check-env.sh 腳本來進行環境檢測,如果你的環境存在任何的問題,腳本將打印出詳細報錯信息。如果沒有報錯信息,代表你的環境適合 Kylin 運行。

Step 5. 啓動 Kylin

運行 $KYLIN_HOME/bin/kylin.sh start 腳本來啓動 Kylin,如果啓動成功,命令行的末尾會輸出如下內容:

A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
Check the log at /usr/local/apache-kylin-3.0.0-bin-cdh57/logs/kylin.log
Web UI is at http://<hostname>:7070/kylin

Kylin 啓動的默認端口是 7070,可以使用 $KYLIN_HOME/bin/ kylin-port-replace-util.sh set number 來修改端口,修改後的端口是 7070+number。

Step 6. 訪問 Kylin

Kylin 啓動後,你可以通過瀏覽器 http://:port/kylin 進行訪問。其中  爲具體的機器名、IP 地址或域名,port 爲 Kylin 端口,默認爲 7070。初始用戶名和密碼是 ADMIN/KYLIN。服務器啓動後,可以通過查看 $KYLIN_HOME/logs/kylin.log 獲得運行時日誌。

Step 7. 創建 Sample Cube

Kylin 提供了一個創建樣例 Cube 的腳本,以供用戶快速體驗 Kylin。在命令行運行

$KYLIN_HOME/bin/sample.sh

完成後登陸 Kylin,點擊 System->Configuration->Reload Metadata 來重載元數據。

元數據重載完成後,你可以在左上角的 Project 中看到一個名爲 learn_kylin 的項目,它包含 kylin_sales_cube 和 kylin_streaming_cube, 它們分別爲 batch cube 和 streaming cube。你可以直接對 kylin_sales_cube 進行構建,構建完成後就可以查詢。對於 kylin_streaming_cube,需要設置 KAFKA_HOME,然後執行 ${KYLIN_HOME}/bin/sample-streaming.sh,該腳本會在 localhost:9092 broker 中創建名爲 kylin_streaming_topic 的 Kafka Topic,它也會每秒隨機發送 100 條 messages 到 kylin_streaming_topic,然後你可以對 kylin_streaming_cube 進行構建。

關於 sample cube,可以參考http://kylin.apache.org/cn/docs/tutorial/kylin_sample.html。

當然,你也可以根據下面的教程來嘗試創建自己的 Cube。

Step 8. 創建 Project 

登陸 kylin 後,點擊左上角的 + 號來創建 Project。

創建 project

Step 9. 加載 Hive 表

點擊 Model->Data Source->Load Table From Tree,Kylin 會讀取到 Hive 數據源中的表,並以樹狀方式顯示出來,你可以選擇自己要使用的表,然後點擊 Sync 進行將其加載到 Kylin。

隨後,它們會出現在 Data Source 的 Tables 目錄中

Step 10. 創建模型

點擊 Model->New->New Model:

 

輸入 Model Name 點擊 Next 進行下一步,選擇 Fact Table 和 Lookup Table,添加 Lookup Table 時需要設置與事實表的 JOIN 條件。

然後點擊 Next 到下一步選擇 Dimension:

選擇dimension

Next 下一步選擇 Measure:

Next 下一步設置時間分區列和過濾條件,時間分區列用於增量構建時選擇時間範圍,如果不設置時間分區列則代表該 model 下的 cube 都是全量構建。過濾條件會在打平表時用於 where 條件。

 

然後點擊 Save 保存模型。

Step 11. 創建 Cube

Model->New->New Cube

點擊 Next 到下一步添加 Dimension,Lookup Table 的維度可以設置爲 Normal(普通維度)或者 Derived(衍生維度)兩種類型,默認設置爲衍生維度,衍生維度代表該列可以從所屬維度表的主鍵中衍生出來,所以實際上只有主鍵列會被 Cube 加入計算。

 

點擊 Next 到下一步,點擊 +Measure 來添加需要預計算的度量。Kylin 會默認創建一個 Count(1) 的度量。Kylin 支持 SUM、MIN、MAX、COUNT、COUNT_DISTINCT、TOP_N、EXTENDED_COLUMN、PERCENTILE 八種度量。請爲 COUNT_DISTINCT 和 TOP_N 選擇合適的返回類型,這關係到 Cube 的大小。添加完成之後點擊 ok,該 Measure 將會顯示在 Measures 列表中。

添加完所有 Measure 後,點擊 Next 進行下一步,這一頁是關於 Cube 數據刷新的設置。在這裏可以設施自動合併的閾值(Auto Merge Thresholds)、數據保留的最短時間(Retention Threshold)以及第一個 Segment 的起點時間。

cube數據刷新

點擊 Next 跳轉到下一頁高級設置。在這裏可以設置聚合組、RowKeys、Mandatory Cuboids、Cube Engine 等。關於高級設置的詳細信息,可以參考 http://kylin.apache.org/cn/docs/tutorial/create_cube.html 頁面中的步驟 5,其中對聚合組等設置進行了詳細介紹。關於更多維度優化,可以閱讀http://kylin.apache.org/blog/2016/02/18/new-aggregation-group/。

高級設置

對於高級設置不是很熟悉時可以先保持默認設置,點擊 Next 跳轉到 Kylin Properties 頁面,你可以在這裏重寫 cube 級別的 Kylin 配置項,定義覆蓋的屬性,配置項請參考:http://kylin.apache.org/cn/docs/install/configuration.html。

 

配置完成後,點擊 Next 按鈕到下一頁,這裏可以預覽你正在創建的 Cube 的基本信息,並且可以返回之前的步驟進行修改。如果沒有需要修改的部分,就可以點擊 Save 按鈕完成 Cube 創建。之後,這個 Cube 將會出現在你的 Cube 列表中。

Step 12. 構建 Cube

上一個步驟創建好的Cube只有定義,而沒有計算好的數據,它的狀態是“DISABLED”,是不可以查詢的。要想讓 Cube 有數據,還需要對它進行構建。Cube 的構建方式通常有兩種:全量構建和增量構建。

點擊要構建的 Cube 的 Actions 列下的 Action 展開,選擇 Build,如果 Cube 所屬 Model 中沒有設置時間分區列,則默認全量構建,點擊 Submit 直接提交構建任務。如果設置了時間分區列,則會出現如下頁面,在這裏你要選擇構建數據的起止時間:

cube構建

設置好起止時間後,點擊 Submit 提交構建任務。然後你可以在 Monitor 頁面觀察構建任務的狀態。Kylin 會在頁面上顯示每一個步驟的運行狀態、輸出日誌以及 MapReduce 任務。可以在 ${KYLIN_HOME}/logs/kylin.log 中查看更詳細的日誌信息。

任務監控

任務構建完成後,Cube 狀態會變成 READY,並且可以看到 Segment 的信息。

 

Step 13. 查詢 Cube

Cube 構建完成後,在 Insight 頁面的 Tables 列表下面可以看到構建完成的 Cube 的 table,並可以對其進行查詢。查詢語句擊中 Cube 後,會返回存儲在 HBase 中的預計算結果。

 

恭喜,進行到這裏你已經具備了使用 Kylin 的基本技能,可以去發現和探索更多更強大的功能了。

 

瞭解更多大數據資訊,點擊進入Kyligence官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章