Apache Kylin 入門系列目錄
- Apache Kylin 入門 1 - 基本概念
- Apache Kylin 入門 2 - 原理與架構
- Apache Kylin 入門 3 - 安裝配置引數詳解
- Apache Kylin 入門 4 - 構建 Model
- Apache Kylin 入門 5 - 構建 Cube
- Apache Kylin 入門 6 - 優化 Cube
- 基於 ELKB 構建 Kylin 查詢時間監控頁面
安裝 Kylin
前面兩篇文章介紹了 Apache Kylin 相關的基本概念以及其工作原理,下面將進入實戰部分,首先就是安裝部署與配置。
大資料環境要求(V2.5.1)
- Hadoop: 2.7+, 3.1+
- Hive: 0.13 - 1.2.1+
- HBase: 1.1+, 2.0
- Spark (可選) 2.1.1+
- Kafka (可選) 0.10.0+
- JDK: 1.8+
- OS: Linux only, CentOS 6.5+ or Ubuntu 16.0.4+
- HDP (官方已測試) 2.2 - 2.6 and 3.0
- CDH (官方已測試) 5.7 - 5.11 and 6.0
大資料環境要求(V2.4.X)
- Hadoop: 2.7+
- Hive: 0.13 - 1.2.1+
- HBase: 1.1+
- Spark (可選) 2.1.1+
- Kafka (可選) 0.10.0+
- JDK: 1.7+
- OS: Linux only, CentOS 6.5+ or Ubuntu 16.0.4+
- HDP (官方已測試) 2.2 - 2.6
- CDH (官方已測試) 5.7 - 5.11
從上述配置可以看到,最新版(V2.5.1)有了諸多的變化,支援了 Hadoop 3.1,HBase 2.0;JDK 需求為 JDK8;CDH 使用者需要注意的是:V2.5 已經支援 CDH 6.0 了。
硬體配置
最低配置(官方網站)
- 4 core CPU
- 16 GB memory
- 100 GB disk
推薦配置(KAP 官方文件)
- 兩路 Intel 至強處理器,6核(或8核)CPU,主頻 2.3GHz 或以上
- 64GB memory
- 至少 1 個 1TB 的 SAS 硬碟(3.5寸),7200RPM,RAID1
安裝包檔案目錄說明
- bin:Kylin 指令碼所在目錄,包括:啟停管理、後設資料管理、環境檢查、建立樣例等指令碼;
- conf:Kylin 配置檔案所在目錄,包括:Hive、Job、Kylin 執行引數、Kylin Config 等;
- lib:Kylin JDBC 驅動,HBase Coprocessor 協處理器 jar 所在目錄;
- meta_backups:Kylin 後設資料備份目錄;
- sample_cube:官方樣例所依賴的指令碼和資料;
- sys_cube:系統 Cube 構建所依賴的指令碼;
- spark:預設為自帶的 spark,圖中是一個軟連線,指向地址為單獨部署的 Spark。
安裝部署 Kylin
詳細步驟可參考官方網站,下面簡單介紹 Kylin 的安裝步驟:
- 從官方網站下載合適的版本;
- 解壓安裝包,配置環境變數 KYLIN_HOME 指向 Kylin 資料夾;
- 檢查 Kylin 執行環境:
$KYLIN_HOME/bin/check-env.sh
; - 啟動 Kylin:
$KYLIN_HOME/bin/kylin.sh start
; - 通過瀏覽器
http://hostname:7070/kylin
檢視,初始使用者名稱和密碼為ADMIN/KYLIN
; - 執行
$KYLIN_HOME/bin/kylin.sh stop
即可停止 Kylin。
引數配置
配置檔案一覽
元件名 | 檔名 | 描述 |
---|---|---|
Kylin | kylin.properties |
Kylin 使用的全域性配置檔案 |
Kylin | kylin_hive_conf.xml |
Hive 任務的配置項,在構建 Cube 的第一步通過 Hive 生成中間表時,會根據該檔案的設定調整 Hive 的配置引數 |
Kylin | kylin_job_conf_inmem.xml |
包含了 MR 任務的配置項,當 Cube 構建演算法是 Fast Cubing 時,會根據該檔案的設定調整構建任務中的 MR 引數 |
Kylin | kylin_job_conf.xml |
MR 任務的配置項,當 kylin_job_conf_inmem.xml 不存在,或 Cube 構建演算法是 Layer Cubing 時,會根據該檔案的設定調整構建任務中的 MR 引數 |
Hadoop | core-site.xml |
Hadoop使用的全域性配置檔案,用於定義系統級別的引數,如HDFS URL、Hadoop臨時目錄等 |
Hadoop | hdfs-site.xml |
用於配置HDFS引數,如 NameNode 與 DataNode 存放位置、檔案副本個數、檔案讀取許可權等 |
Hadoop | yarn-site.xml |
用於配置 Hadoop 叢集資源管理系統引數,如 ResourceManader 與 NodeManager 的通訊埠,web監控埠等 |
Hadoop | mapred-site.xml |
用於配置 MR 引數,如 reduce 任務的預設個數,任務所能夠使用記憶體的預設上下限等 |
Hbase | hbase-site.xml |
用於配置 Hbase 執行引數,如 master 機器名與埠號,根資料存放位置等 |
Hive | hive-site.xml |
用於配置 Hive 執行引數,如 hive 資料存放目錄,資料庫地址等 |
Hadoop 引數配置
yarn.nodemanager.resource.memory-mb
配置項的值不小於 8192MByarn.scheduler.maximum-allocation-mb
配置項的值不小於 4096MBmapreduce.reduce.memory.mb
配置項的值不小於 700MBmapreduce.reduce.java.opts
配置項的值不小於 512MByarn.nodemanager.resource.cpu-vcores
配置項的值不小於 8
kylin.properties 核心引數
配置名 | 預設值 | 說明 |
---|---|---|
kylin.metadata.url | kylin_metadata@hbase |
Kylin 後設資料庫路徑 |
kylin.env.hdfs-working-dir | /kylin |
Kylin 服務所用的 HDFS 路徑 |
kylin.server.mode | all |
執行模式,可以是 all,job,query 中的一個 |
kylin.source.hive.database-for-flat-table | default |
Hive 中間表儲存在哪個 Hive 資料庫中 |
kylin.storage.hbase.compression-codec | none |
HTable 所採用的壓縮演算法 |
kylin.storage.hbase.table-name-prefix | kylin_ |
HTable 表名的字首 |
kylin.storage.hbase.namespace | default |
HTable 預設表空間 |
kylin.storage.hbase.region-cut-gb | 5 |
region 分割的大小 |
kylin.storage.hbase.hfile-size-gb | 2 |
hfile 大小 |
kylin.storage.hbase.min-region-count | 1 |
最小 region 個數 |
kylin.storage.hbase.max-region-count | 500 |
最大 region 個數 |
kylin.query.force-limit | -1 |
為select * 語句強制新增 LIMIT 分句 |
kylin.query.pushdown.update-enabled | false |
是否開啟查詢下壓 |
kylin.query.pushdown.cache-enabled | false |
開啟查詢是否快取 |
kylin.cube.is-automerge-enabled | true |
segment 自動合併功能 |
kylin.metadata.hbase-client-scanner-timeout-period | 10000 |
HBase 掃描資料的超時時間 |
kylin.metadata.hbase-rpc-timeout | 5000 |
執行 RPC 操作的超時時間 |
kylin.metadata.hbase-client-retries-number | 1 |
HBase 重試次數 |
對上述引數的一些說明:
kylin.query.force-limit
預設是沒有限制,推薦設定為 1000;kylin.storage.hbase.hfile-size-gb
可以設定為 1,有助於加快 MR 速度;kylin.storage.hbase.min-region-count
可以設定為 HBase 節點數,強制資料分散在 N 個節點;kylin.storage.hbase.compression-codec
預設沒有進行壓縮,推薦在環境執行情況下配置壓縮演算法。
Spark 相關配置
所有使用 kylin.engine.spark-conf.
作為字首的 Spark 配置屬性都能在 $KYLIN_HOME/conf/kylin.properties
中進行管理,當然這些引數支援在 Cube 的高階配置中進行覆蓋。下面是推薦的 Spark 動態資源分配配置:
//執行在yarn-cluster模式,當然可以配置為獨立 Spark 叢集:spark://ip:7077
kylin.engine.spark-conf.spark.master=yarn
kylin.engine.spark-conf.spark.submit.deployMode=cluster
//啟動動態資源分配
kylin.engine.spark-conf.spark.dynamicAllocation.enabled=true
kylin.engine.spark-conf.spark.dynamicAllocation.minExecutors=2
kylin.engine.spark-conf.spark.dynamicAllocation.maxExecutors=1000
kylin.engine.spark-conf.spark.dynamicAllocation.executorIdleTimeout=300
kylin.engine.spark-conf.spark.shuffle.service.enabled=true
kylin.engine.spark-conf.spark.shuffle.service.port=7337
//記憶體設定
kylin.engine.spark-conf.spark.driver.memory=2G
//資料規模較大或者字典較大時可以調大 executor 記憶體
kylin.engine.spark-conf.spark.executor.memory=4G
kylin.engine.spark-conf.spark.executor.cores=2
//心跳超時
kylin.engine.spark-conf.spark.network.timeout=600
//分割槽大小
kylin.engine.spark.rdd-partition-cut-mb=100
複製程式碼
Cube Planner 相關配置
Cube Planner 是 V2.3 後新增的新功能,使用該功能可以在 Cube 建立成功後即可看到全部 Cuboid 的數目及組合情況;此外配置成功後,可以看到線上的 Query 與 Cuboid 的匹配情況,使得可以檢視到熱門、冷門甚至沒有使用到的 Cuboid,藉助這些可以指導我們對 Cube 構建進行二次優化;關於 Cube Planner 的使用,可以參考官方文件:kylin.apache.org/cn/docs/tut…。
參考文章
Any Code,Code Any!
掃碼關注『AnyCode』,程式設計路上,一起前行。