Kylin學習筆記 - mac使用docker安裝和使用Kylin
第一章 概述及安裝啓動
1.1 Kylin概覽
Apache Kylin™是一個開源的、分佈式的分析型數據倉庫,提供 Hadoop 之上的 SQL 查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc.開發並貢獻至開源社區。
Apache Kylin™ 令使用者僅需三步,即可實現超大數據集上的亞秒級查詢。
- 定義數據集上的一個星形或雪花形模型
- 在定義的數據表上構建cube
- 使用標準 SQL 通過 ODBC、JDBC 或 RESTFUL API 進行查詢,僅需亞秒級響應時間即可獲得查詢結果
1.2 Kylin架構
Kylin 提供與多種數據可視化工具的整合能力,如 Tableau,PowerBI 等,令用戶可以使用 BI 工具對 Hadoop 數據進行分析。
1)REST Server
REST Server是一套面向應用程序開發的入口點,旨在實現針對Kylin平臺的應用開發工作。 此類應用程序可以提供查詢、獲取結果、觸發cube構建任務、獲取元數據以及獲取用戶權限等等。另外可以通過Restful接口實現SQL查詢。
2)查詢引擎(Query Engine)
當cube準備就緒後,查詢引擎就能夠獲取並解析用戶查詢。它隨後會與系統中的其它組件進行交互,從而向用戶返回對應的結果。
3)路由器(Routing)
在最初設計時曾考慮過將Kylin不能執行的查詢引導去Hive中繼續執行,但在實踐後發現Hive與Kylin的速度差異過大,導致用戶無法對查詢的速度有一致的期望,很可能大多數查詢幾秒內就返回結果了,而有些查詢則要等幾分鐘到幾十分鐘,因此體驗非常糟糕。最後這個路由功能在發行版中默認關閉。
4)元數據管理工具(Metadata)
Kylin是一款元數據驅動型應用程序。元數據管理工具是一大關鍵性組件,用於對保存在Kylin當中的所有元數據進行管理,其中包括最爲重要的cube元數據。其它全部組件的正常運作都需以元數據管理工具爲基礎。 Kylin的元數據存儲在hbase中。
5)任務引擎(Cube Build Engine)
這套引擎的設計目的在於處理所有離線任務,其中包括shell腳本、Java API以及Map Reduce任務等等。任務引擎對Kylin當中的全部任務加以管理與協調,從而確保每一項任務都能得到切實執行並解決其間出現的故障。
1.3 Kylin特點
Kylin的主要特點包括支持SQL接口、支持超大規模數據集、亞秒級響應、可伸縮性、高吞吐率、BI工具集成等。
1)標準SQL接口:
Kylin是以標準的SQL作爲對外服務的接口。
2)支持超大數據集:
Kylin對於大數據的支撐能力可能是目前所有技術中最爲領先的。早在2015年eBay的生產環境中就能支持百億記錄的秒級查詢,之後在移動的應用場景中又有了千億記錄秒級查詢的案例。
3)亞秒級響應:
Kylin擁有優異的查詢相應速度,這點得益於預計算,很多複雜的計算,比如連接、聚合,在離線的預計算過程中就已經完成,這大大降低了查詢時刻所需的計算量,提高了響應速度。
4)可伸縮性和高吞吐率:
單節點Kylin可實現每秒70個查詢,還可以搭建Kylin的集羣。
5)BI工具集成
Kylin可以與現有的BI工具集成,具體包括如下內容。
ODBC:與Tableau、Excel、PowerBI等工具集成
JDBC:與Saiku、BIRT等Java工具集成
RestAPI:與JavaScript、Web網頁集成
Kylin開發團隊還貢獻了****Zepplin****的插件,也可以使用Zepplin來訪問Kylin服務。
第二章 Kylin環境搭建及啓動
官方推薦的兩種環境搭建方式:
- 有Hadoop環境(linux)
- 沒有Hadoop環境(docker)
我這裏使用的是docker搭建環境和啓動kylin
- 本機環境
- docker安裝使用kylin
一、 從docker鏡像安裝使用kylin(不需要提前準備hadoop環境)
爲了讓用戶方便的試用 Kylin,官方已經提供了 Kylin 的 docker 鏡像。該鏡像中,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的一鍵安裝。
step1、首先執行以下命令從 docker 倉庫 pull 鏡像:
docker pull apachekylin/apache-kylin-standalone:3.0.1
此處的鏡像包含的是kylin最新Release版本kylin 3.0.1。由於該鏡像中包含了所有kylin依賴的大數據組件,所以拉取鏡像需要的時間較長,請耐心等待。Pull成功後顯示如下:
step2、執行以下命令來啓動容器:
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
使用ADMIN/KYLIN的用戶名和密碼組合登陸Kylin後,用戶可以使用sample cube來體驗cube的構建和查詢,也可以按照下面“基於hadoop環境安裝使用kylin”中從step8之後的教程來創建並查詢屬於自己的model和cube。
二、本機測試和遇到的問題
1. 本機測試啓動kylin
- docker拉取kylin鏡像後,啓動kylin
- 啓動成功後,查看docker鏡像
2. 我遇到的問題
-
問題描述:
docker啓動成功後,訪問7070端口失敗,查看docker鏡像時,確實已經啓動
- 原因及解決方案:
- 1)docker配置的內存資源不夠,服務啓動後因內存不足導致出錯
- 解決方案:將docker配置的內存大小設置成 > 8G,我這裏分配了9G
- 2)kylin服務啓動慢,等一段時間後再刷新網頁即可登錄
3. 啓動成功
- 默認賬號密碼:
- 賬號:admin
- 密碼:KYLIN
- 登錄成功後,就可以愉快的使用kylin了😁