版本兼容性
Kylin | Hadoop | Hive | HBase | Spark | Kafka | Java | HDP | CDH |
---|---|---|---|---|---|---|---|---|
2.3 | 2.7+ | 0.13 - 1.2.1+ | 1.1+ | 2.1.1+ | 1.7+ | 2.2 - 2.6 | 5.7 - 5.11 | |
2.4 | 2.7+ | 0.13 - 1.2.1+ | 1.1+ | 2.1.1+ | 0.10.0+ | 1.7+ | 2.2 - 2.6 | 5.7 - 5.11 |
2.5, 2.6 | 2.7+, 3.1+ | 0.13 - 1.2.1+ | 1.1+, 2.0 | 2.3.0+ | 1.0.0+ | 1.8+ | 2.2 - 2.6, 3.0 | 5.7 - 5.11, 6.0 |
Hadoop 環(huán)境
Kylin 依賴于 Hadoop 集群處理大量的數(shù)據(jù)集约郁。需要準備一個配置好 HDFS缩挑,YARN,MapReduce鬓梅,Hive,HBase谨湘,Zookeeper 和其他服務的 Hadoop 集群供 Kylin 運行绽快。
Kylin 可以在 Hadoop 集群的任意節(jié)點上啟動。方便起見紧阔,可以在 master 節(jié)點上運行 Kylin坊罢。為了更好的穩(wěn)定性,建議將 Kylin 部署在一個干凈的 Hadoop client 節(jié)點上擅耽,該節(jié)點上 Hive活孩,HBase,HDFS 等命令行已安裝好且 client 配置(如 core-site.xml
乖仇,hive-site.xml
憾儒,hbase-site.xml
及其他)也已經合理的配置且其可以自動和其它節(jié)點同步。
運行 Kylin 的 Linux 用戶要有訪問 Hadoop 集群的權限乃沙,包括創(chuàng)建/寫入 HDFS 文件夾起趾,Hive 表,HBase 表和提交 MapReduce 任務的權限警儒。
單機安裝
- 下載安裝包
> wget https://www.apache.org/dyn/closer.cgi/kylin/apache-kylin-2.6.3/apache-kylin-2.6.3-bin-hbase1x.tar.gz
- 解壓安裝包训裆,配置環(huán)境變量
$KYLIN_HOME
指向 Kylin 文件夾。
> tar -zxvf apache-kylin-2.6.3-bin-hbase1x.tar.gz
> mv apache-kylin-2.6.3-bin-hbase1x apache-kylin-2.6.3
> cd apache-kylin-2.6.3
> export KYLIN_HOME=`pwd`
> export PATH=$PATH:$KYLIN_HOME/bin
Kylin 目錄結構
從 v2.6.1 開始, Kylin 不再包含 Spark 二進制包铝量。需要另外下載 Spark秃症,然后設置 SPARK_HOME 系統(tǒng)變量。
bin shell 腳本变姨,用于啟動/停止 Kylin诸老,備份/恢復 Kylin 元數(shù)據(jù),以及一些檢查端口钳恕、獲取 Hive/HBase 依賴的方法等
conf Hadoop 任務的 XML 配置文件别伏,這些文件的作用可參考配置頁面
lib 供外面應用使用的 jar 文件,例如 Hadoop 任務 jar, JDBC 驅動, HBase coprocessor 等
meta_backups 執(zhí)行 bin/metastore.sh backup 后的默認的備份目錄
sample_cube 用于創(chuàng)建樣例 Cube 和表的文件
spark 自帶的 spark
tomcat 自帶的 tomcat忧额,用于啟動 Kylin 服務
tool 用于執(zhí)行一些命令行的 jar 文件
- 檢查運行環(huán)境
Kylin 運行在 Hadoop 集群上厘肮,對各個組件的版本、訪問權限及 CLASSPATH 等都有一定的要求睦番,為了避免遇到各種環(huán)境問題类茂,可以運行 $KYLIN_HOME/bin/check-env.sh
腳本來進行環(huán)境檢測,如果環(huán)境存在任何的問題托嚣,腳本將打印出詳細報錯信息巩检。如果沒有報錯信息,代表環(huán)境適合 Kylin 運行示启。
- 啟動 Kylin
> $KYLIN_HOME/bin/kylin.sh start
Retrieving hadoop conf dir...
KYLIN_HOME is set to .../apache-kylin-2.6.3
......
A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
Check the log at $KYLIN_HOME/logs/kylin.log
Web UI is at http://<hostname>:7070/kylin
- 使用 Kylin
Kylin 啟動后可以通過瀏覽器 [http://<hostname>:7070/kylin] 進行訪問兢哭。
其中 <hostname> 為具體的機器名、IP 地址或域名夫嗓,默認端口為 7070迟螺。
初始用戶名和密碼是 ADMIN/KYLIN
。
服務器啟動后舍咖,可以通過查看 $KYLIN_HOME/logs/kylin.log
獲得運行時日志矩父。
- 停止 Kylin
> $KYLIN_HOME/bin/kylin.sh stop
Retrieving hadoop conf dir...
KYLIN_HOME is set to .../apache-kylin-2.6.3
Stopping Kylin: 25964
Stopping in progress. Will check after 2 secs again...
Kylin with pid 25964 has been stopped.
可以運行 ps -ef | grep kylin
來查看 Kylin 進程是否已停止。
HDFS 目錄結構
Kylin 會在 HDFS 上生成文件排霉,根目錄是 /kylin/
然后會使用 Kylin 集群的元數(shù)據(jù)表名作為第二層目錄名窍株,默認為 kylin_metadata (可以在 conf/kylin.properties
中定制)
通常 /kylin/kylin_metadata
目錄下會有這么幾種子目錄:
- cardinality -- Kylin 加載 Hive 表時,會啟動一個 MR 任務來計算各個列的基數(shù)攻柠,輸出結果會暫存在此目錄球订。可以安全清除辙诞。
- coprocessor -- Kylin 用于存放 HBase coprocessor jar 的目錄辙售;請勿刪除。
- kylin-job_id -- Cube 計算過程的數(shù)據(jù)存儲目錄飞涂,請勿刪除旦部。如需要清理祈搜,請遵循 storage cleanup guide
- resources -- Kylin 默認會將元數(shù)據(jù)存放在 HBase,但對于太大的文件(如字典或快照)士八,會轉存到 HDFS 的該目錄下容燕,請勿刪除。如需要清理婚度,請遵循 cleanup resources from metadata
- jdbc-resources -- 性質同上蘸秘,只在使用 MySQL 做元數(shù)據(jù)存儲時候出現(xiàn)。
集群安裝
Kylin 實例是無狀態(tài)的服務蝗茁,運行時的狀態(tài)信息存儲在 HBase metastore 中醋虏。 出于負載均衡的考慮,可以啟用多個共享一個 metastore 的 Kylin 實例哮翘,使得各個節(jié)點分擔查詢壓力且互為備份颈嚼,從而提高服務的可用性。
集群模式設置
如果需要將多個 Kylin 節(jié)點組成集群饭寺,請確保他們使用同一個 Hadoop 集群阻课、HBase 集群。然后在每個節(jié)點的配置文件 $KYLIN_HOME/conf/kylin.properties
中執(zhí)行下述操作:
- 配置相同的
kylin.metadata.url
值艰匙,即配置所有的 Kylin 節(jié)點使用同一個 HBase metastore限煞。 - 配置 Kylin 節(jié)點列表
kylin.server.cluster-servers
,包括所有節(jié)點(包括當前節(jié)點)员凝,當事件變化時署驻,接收變化的節(jié)點需要通知其他所有節(jié)點(包括當前節(jié)點)。 - 配置 Kylin 節(jié)點的運行模式
kylin.server.mode
绊序,參數(shù)值可選all
,job
,query
中的一個硕舆,默認值為all
。-
job
模式代表該服務僅用于任務調度骤公,不用于查詢; -
query
模式代表該服務僅用于查詢扬跋,不用于構建任務的調度阶捆; -
all
模式代表該服務同時用于任務調度和 SQL 查詢。 - 注意:默認情況下只有一個實例用于構建任務的調度(即
kylin.server.mode
設置為all
或者job
模式)钦听。
-
任務引擎高可用
從 v2.0 開始, Kylin 支持多個任務引擎一起運行洒试,相比于默認單任務引擎的配置,多引擎可以保證任務構建的高可用朴上。
使用多任務引擎垒棋,可以在多個 Kylin 節(jié)點上配置它的角色為 job
或 all
。為了避免它們之間產生競爭痪宰,需要啟用分布式任務鎖叼架,請在 kylin.properties
里配置:
kylin.job.scheduler.default=2
kylin.job.lock=org.apache.kylin.storage.hbase.util.ZookeeperJobLock
將所有任務和查詢節(jié)點的地址注冊到 kylin.server.cluster-servers
畔裕。
安裝負載均衡器
為了將查詢請求發(fā)送給集群而非單個節(jié)點,可以部署一個負載均衡器乖订,如 Nginx扮饶, F5 或 cloudlb 等,使得客戶端和負載均衡器通信代替和特定的 Kylin 實例通信乍构。
讀寫分離部署
為了達到更好的穩(wěn)定性和最佳的性能甜无,建議進行讀寫分離部署,將 Kylin 部署在兩個集群上:
- 一個 Hadoop 集群用作 Cube 構建哥遮,這個集群可以是一個大的岂丘、與其它應用共享的集群;
- 一個 HBase 集群用作 SQL 查詢眠饮,通常這個集群是專門為 Kylin 配置的奥帘,節(jié)點數(shù)不用像 Hadoop 集群那么多,HBase 的配置可以針對 Kylin Cube 只讀的特性而進行優(yōu)化君仆。
這種部署策略是適合生產環(huán)境的最佳部署方案翩概,關于如何進行讀寫分離部署,請參考 Deploy Apache Kylin with Standalone HBase Cluster