1. Kylin概述与环境规划
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据集的亚秒级查询。更多学习教程www.fgedu.net.cn
1.1 Kylin版本说明
Kylin目前主要版本为5.0,本教程以Kylin 5.0为例进行详细讲解。
$ /data/kylin/bin/kylin.sh version
Kylin version: 5.0.0
# 查看Java版本
$ java -version
openjdk version “11.0.20” 2023-07-18 LTS
OpenJDK Runtime Environment (build 11.0.20+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.20+9-LTS, mixed mode, sharing)
1.2 环境规划
本次安装环境规划如下:
主机名:kylin01.fgedu.net.cn
IP地址:192.168.1.51
端口:7070
Hadoop集群:
NameNode:192.168.1.51:9870
ResourceManager:192.168.1.51:8088
Hive Metastore:192.168.1.51:9083
HBase集群:
HMaster:192.168.1.51:16000
Kylin版本:5.0.0
Hadoop版本:3.3.6
HBase版本:2.5.5
Hive版本:3.1.3
Spark版本:3.4.1
安装目录:/data/kylin
1.3 Kylin核心特性
1. 亚秒级查询:基于预计算的OLAP引擎
2. 标准SQL:支持ANSI SQL标准
3. 多维分析:支持OLAP多维分析
4. 可扩展:支持水平扩展
5. 安全性:支持Kerberos、LDAP认证
6. 易用性:提供Web UI和REST API
7. 集成性:支持BI工具集成
架构组件:
– Query Server:查询服务
– Job Server:任务调度服务
– Metadata Store:元数据存储
– Storage:数据存储(HBase/HDFS)
– Build Engine:构建引擎(Spark/MapReduce)
2. 硬件环境要求与检查
在安装Kylin之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:4核心
内存:16GB
磁盘:100GB
推荐配置(生产环境):
CPU:8核心以上
内存:32GB以上
磁盘:500GB以上
高并发配置:
CPU:16核心以上
内存:64GB以上
磁盘:1TB SSD
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内核版本
# uname -r
4.18.0-477.27.1.el8_8.x86_64
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 62Gi 2.0Gi 58Gi 256Mi 2.0Gi 59Gi
Swap: 31Gi 0B 31Gi
# 检查磁盘空间
# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data
2.3 依赖环境安装
# yum install -y java-11-openjdk java-11-openjdk-devel
# 配置JAVA_HOME
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# 使配置生效
# source /etc/profile.d/java.sh
# 验证Java版本
$ java -version
openjdk version “11.0.20” 2023-07-18 LTS
# 配置系统参数
# vi /etc/sysctl.d/99-kylin.conf
vm.swappiness = 1
vm.max_map_count = 262144
fs.file-max = 2097152
# 使配置生效
# sysctl -p /etc/sysctl.d/99-kylin.conf
# 检查Hadoop环境
$ hdfs version
Hadoop 3.3.6
# 检查Hive环境
$ hive –version
Hive 3.1.3
# 检查HBase环境
$ hbase version
HBase 2.5.5
3. Kylin安装步骤
本节详细介绍Kylin的安装过程。学习交流加群风哥QQ113257174
3.1 创建用户和目录
# useradd -r -s /bin/bash kylin
# 创建目录
# mkdir -p /data/kylin
# mkdir -p /var/log/kylin
# 设置权限
# chown -R kylin:kylin /data/kylin
# chown -R kylin:kylin /var/log/kylin
3.2 下载安装Kylin
# cd /data
# wget https://archive.apache.org/dist/kylin/apache-kylin-5.0.0/apache-kylin-5.0.0-bin.tar.gz
# 解压安装
# tar -xzf apache-kylin-5.0.0-bin.tar.gz
# mv apache-kylin-5.0.0-bin kylin
# chown -R kylin:kylin /data/kylin
# 验证安装
$ ls -la /data/kylin/
# 输出示例:
total 16
drwxr-xr-x. 8 kylin kylin 4096 Apr 4 10:00 .
drwxr-xr-x. 3 root root 22 Apr 4 10:00 ..
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 bin
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 conf
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 lib
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 spark
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 tomcat
drwxr-xr-x. 2 kylin kylin 4096 Apr 4 10:00 tool
3.3 配置环境变量
# vi /etc/profile.d/kylin.sh
export KYLIN_HOME=/data/kylin
export PATH=$KYLIN_HOME/bin:$PATH
# 使配置生效
# source /etc/profile.d/kylin.sh
# 验证环境变量
$ echo $KYLIN_HOME
/data/kylin
3.4 配置Kylin
# vi /data/kylin/conf/kylin.properties
# 基本配置
kylin.server.mode=all
kylin.server.cluster-servers=192.168.1.51:7070
# 元数据配置
kylin.metadata.url=kylin_metadata@hbase
# 存储配置
kylin.storage.url=hbase
# Hadoop配置
kylin.env.hadoop-conf-dir=/etc/hadoop/conf
# Hive配置
kylin.source.hive.client=cli
kylin.source.hive.enable-dynamic-partition=true
# Spark配置
kylin.build.spark-conf.spark.master=yarn
kylin.build.spark-conf.spark.submit.deployMode=cluster
# 查询配置
kylin.query.security.enabled=false
kylin.query.timeout=600000
# 内存配置
kylin.query.memory-budget-bytes=1073741824
3.5 启动Kylin
$ $KYLIN_HOME/bin/check-env.sh
# 输出示例:
Checking Hadoop environment…
Hadoop environment OK.
Checking Hive environment…
Hive environment OK.
Checking HBase environment…
HBase environment OK.
Checking Spark environment…
Spark environment OK.
# 启动Kylin
$ $KYLIN_HOME/bin/kylin.sh start
# 输出示例:
Starting Kylin…
Kylin started successfully.
# 检查进程
$ ps aux | grep kylin
# 输出示例:
kylin 12345 5.0 5.0 12345678 123456 ? Sl 10:00 0:10 /usr/lib/jvm/java-11-openjdk/bin/java -Dkylin.home=/data/kylin …
kylin 12456 2.0 2.0 12345678 65536 ? Sl 10:00 0:05 /usr/lib/jvm/java-11-openjdk/bin/java -Dkylin.home=/data/kylin …
# 检查端口
$ netstat -tlnp | grep kylin
# 输出示例:
tcp6 0 0 :::7070 :::* LISTEN 12345/java
# 访问Web UI
http://192.168.1.51:7070/kylin
# 默认用户名密码
用户名:ADMIN
密码:KYLIN
4. Kylin参数配置
Kylin参数配置是性能优化的关键步骤,直接影响查询性能。更多学习教程公众号风哥教程itpux_com
4.1 核心配置详解
# vi /data/kylin/conf/kylin.properties
# 服务器模式
# all:同时运行Query和Job服务
# query:只运行Query服务
# job:只运行Job服务
kylin.server.mode=all
# 集群配置
kylin.server.cluster-servers=192.168.1.51:7070,192.168.1.52:7070
# 元数据存储
kylin.metadata.url=kylin_metadata@hbase
# 存储类型
kylin.storage.url=hbase
# 查询超时(毫秒)
kylin.query.timeout=600000
# 查询并发数
kylin.query.max-scan-bytes=10737418240
# 构建并发数
kylin.job.max-concurrent-jobs=10
# 重启服务
$ $KYLIN_HOME/bin/kylin.sh restart
4.2 Spark构建配置
# vi /data/kylin/conf/kylin.properties
# Spark Master
kylin.build.spark-conf.spark.master=yarn
kylin.build.spark-conf.spark.submit.deployMode=cluster
# Spark资源配置
kylin.build.spark-conf.spark.executor.instances=4
kylin.build.spark-conf.spark.executor.cores=4
kylin.build.spark-conf.spark.executor.memory=8g
kylin.build.spark-conf.spark.driver.memory=4g
# Spark优化配置
kylin.build.spark-conf.spark.sql.shuffle.partitions=200
kylin.build.spark-conf.spark.default.parallelism=200
kylin.build.spark-conf.spark.sql.adaptive.enabled=true
kylin.build.spark-conf.spark.sql.adaptive.shuffle.targetPostShuffleInputSize=134217728
# Spark内存配置
kylin.build.spark-conf.spark.memory.fraction=0.6
kylin.build.spark-conf.spark.memory.storageFraction=0.5
# 重启服务
$ $KYLIN_HOME/bin/kylin.sh restart
4.3 查询优化配置
# vi /data/kylin/conf/kylin.properties
# 查询内存预算
kylin.query.memory-budget-bytes=1073741824
# 查询并发
kylin.query.max-concurrent-queries=20
# 查询缓存
kylin.query.cache.enabled=true
kylin.query.cache.max-size=1000
# 下推配置
kylin.query.enable-dict-enumeration-threshold=1000000
# 结果集限制
kylin.query.max-return-rows=500000
# 重启服务
$ $KYLIN_HOME/bin/kylin.sh restart
5. 数据模型配置
Kylin数据模型是OLAP分析的基础,本节介绍数据模型的创建方法。from:www.itpux.com
5.1 创建项目
步骤1:登录Kylin Web UI
步骤2:点击”Modeling” -> “Projects”
步骤3:点击”+ Project”
步骤4:输入项目名称:fgedu_project
步骤5:点击”Submit”
# 通过REST API创建项目
$ curl -X POST \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
-H “Content-Type: application/json” \
-d ‘{“name”:”fgedu_project”,”description”:”FGedu Analytics Project”}’ \
http://192.168.1.51:7070/kylin/api/projects
# 输出示例:
{
“uuid”: “xxxxx-xxxxx-xxxxx-xxxxx”,
“name”: “fgedu_project”,
“description”: “FGedu Analytics Project”,
“create_time”: 1712217600000,
“owner”: “ADMIN”
}
5.2 创建数据源
步骤1:选择项目”fgedu_project”
步骤2:点击”Modeling” -> “Data Source”
步骤3:点击”Load Table”
步骤4:输入Hive表名:fgedudb.fgedu_orders
步骤5:点击”Sync”
# 通过REST API加载数据源
$ curl -X POST \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
-H “Content-Type: application/json” \
-d ‘{“tables”:”fgedudb.fgedu_orders,fgedudb.fgedu_users,fgedudb.fgedu_products”}’ \
http://192.168.1.51:7070/kylin/api/tables/fgedudb/hive
# 输出示例:
{
“result”: “success”,
“loaded_tables”: [
“fgedudb.fgedu_orders”,
“fgedudb.fgedu_users”,
“fgedudb.fgedu_products”
]
}
# 查看表结构
$ curl -X GET \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
http://192.168.1.51:7070/kylin/api/tables/fgedudb.fgedu_orders
# 输出示例:
{
“name”: “fgedu_orders”,
“database”: “fgedudb”,
“columns”: [
{“name”: “order_id”, “type”: “bigint”},
{“name”: “user_id”, “type”: “bigint”},
{“name”: “product_id”, “type”: “bigint”},
{“name”: “order_amount”, “type”: “decimal(10,2)”},
{“name”: “order_date”, “type”: “date”},
{“name”: “order_status”, “type”: “string”}
]
}
5.3 创建数据模型
步骤1:点击”Modeling” -> “Models”
步骤2:点击”+ Model”
步骤3:填写模型信息:
– 名称:fgedu_order_model
– 事实表:fgedudb.fgedu_orders
步骤4:添加维度:
– 用户维度:fgedudb.fgedu_users
– 产品维度:fgedudb.fgedu_products
步骤5:配置关联条件:
– fgedu_orders.user_id = fgedu_users.id
– fgedu_orders.product_id = fgedu_products.id
步骤6:选择维度列:
– 订单日期:order_date
– 用户名称:fgedu_users.name
– 产品名称:fgedu_products.name
– 订单状态:order_status
步骤7:选择度量列:
– 订单金额:SUM(order_amount)
– 订单数量:COUNT(*)
步骤8:选择分区列:order_date
步骤9:点击”Save”
# 通过REST API创建模型
$ curl -X POST \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
-H “Content-Type: application/json” \
-d ‘{
“name”: “fgedu_order_model”,
“fact_table”: “fgedudb.fgedu_orders”,
“lookups”: [
{
“table”: “fgedudb.fgedu_users”,
“join”: {
“type”: “LEFT”,
“primary_key”: [“id”],
“foreign_key”: [“user_id”]
}
}
],
“dimensions”: [
{“table”: “fgedudb.fgedu_orders”, “column”: “order_date”},
{“table”: “fgedudb.fgedu_users”, “column”: “name”}
],
“metrics”: [
{“name”: “order_amount_sum”, “type”: “SUM”, “column”: “order_amount”}
],
“partition_desc”: {
“partition_date_column”: “fgedudb.fgedu_orders.order_date”,
“partition_date_format”: “yyyy-MM-dd”
}
}’ \
http://192.168.1.51:7070/kylin/api/models
6. Cube构建与优化
Cube是Kylin的核心概念,本节介绍Cube的创建和优化方法。更多学习教程www.fgedu.net.cn
6.1 创建Cube
步骤1:点击”Modeling” -> “Models”
步骤2:选择模型”fgedu_order_model”
步骤3:点击”+ Cube”
步骤4:填写Cube信息:
– 名称:fgedu_order_cube
– 模型:fgedu_order_model
步骤5:选择维度:
– 订单日期(必需)
– 用户名称
– 产品名称
– 订单状态
步骤6:选择度量:
– SUM(order_amount)
– COUNT(*)
– MAX(order_amount)
– MIN(order_amount)
步骤7:配置聚合组:
– 自动聚合组
步骤8:配置分区:
– 分区列:order_date
– 分区格式:yyyy-MM-dd
步骤9:点击”Save”
# 通过REST API创建Cube
$ curl -X POST \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
-H “Content-Type: application/json” \
-d ‘{
“name”: “fgedu_order_cube”,
“model_name”: “fgedu_order_model”,
“dimensions”: [
{“name”: “ORDER_DATE”, “table”: “fgedudb.fgedu_orders”, “column”: “order_date”},
{“name”: “USER_NAME”, “table”: “fgedudb.fgedu_users”, “column”: “name”}
],
“measures”: [
{“name”: “ORDER_AMOUNT_SUM”, “function”: {“type”: “SUM”, “parameter”: {“type”: “column”, “value”: “order_amount”}}},
{“name”: “ORDER_COUNT”, “function”: {“type”: “COUNT”, “parameter”: {“type”: “constant”, “value”: “1”}}}
],
“partition_desc”: {
“partition_date_column”: “fgedudb.fgedu_orders.order_date”,
“partition_date_format”: “yyyy-MM-dd”
}
}’ \
http://192.168.1.51:7070/kylin/api/cubes
6.2 构建Cube
步骤1:选择Cube”fgedu_order_cube”
步骤2:点击”Build”
步骤3:选择构建类型:FULL_BUILD
步骤4:点击”Submit”
# 构建Cube(增量构建)
步骤1:选择Cube”fgedu_order_cube”
步骤2:点击”Build”
步骤3:选择构建类型:BUILD
步骤4:选择时间范围:2026-01-01 ~ 2026-03-31
步骤5:点击”Submit”
# 通过REST API构建Cube
$ curl -X POST \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
-H “Content-Type: application/json” \
-d ‘{
“buildType”: “BUILD”,
“startTime”: 1704067200000,
“endTime”: 1711929599000
}’ \
http://192.168.1.51:7070/kylin/api/cubes/fgedu_order_cube/build
# 输出示例:
{
“job_id”: “xxxxx-xxxxx-xxxxx-xxxxx”,
“job_name”: “BUILD CUBE fgedu_order_cube – 2026-01-01 ~ 2026-03-31”,
“job_status”: “RUNNING”
}
# 查看构建进度
$ curl -X GET \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
http://192.168.1.51:7070/kylin/api/jobs/xxxxx-xxxxx-xxxxx-xxxxx
# 输出示例:
{
“job_id”: “xxxxx-xxxxx-xxxxx-xxxxx”,
“job_name”: “BUILD CUBE fgedu_order_cube – 2026-01-01 ~ 2026-03-31”,
“job_status”: “FINISHED”,
“progress”: 100,
“duration”: 3600000
}
6.3 Cube优化
1. 聚合组优化
# 配置聚合组减少Cuboid数量
# vi /data/kylin/conf/kylin.properties
kylin.cube.aggregation.group.enabled=true
2. 维度优化
# 使用Mandatory维度
# 必须出现在查询中的维度
# 减少Cuboid数量
3. 衍生维度
# 将维度表的主键设为衍生维度
# 减少存储空间
4. 分区优化
# 按日期分区,支持增量构建
# 减少每次构建的数据量
5. 并行构建
# 配置并行构建提高效率
kylin.build.parallel.enabled=true
kylin.build.parallel.max-threads=10
# 查看Cube统计
$ curl -X GET \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
http://192.168.1.51:7070/kylin/api/cubes/fgedu_order_cube/desc
# 输出示例:
{
“name”: “fgedu_order_cube”,
“cuboid_count”: 16,
“source_rows”: 10000000,
“source_size”: 1073741824,
“cube_size”: 107374182
}
7. 查询优化
Kylin查询优化是提升性能的关键,本节介绍常用的优化方法。学习交流加群风哥微信: itpux-com
7.1 查询示例
$ beeline -u “jdbc:kylin://192.168.1.51:7070/fgedu_project” -n ADMIN -p KYLIN
# 基本查询
0: jdbc:kylin://192.168.1.51:7070> SELECT
. . . . . . . . . . . . . . . .> order_date,
. . . . . . . . . . . . . . . .> SUM(order_amount) as total_amount,
. . . . . . . . . . . . . . . .> COUNT(*) as order_count
. . . . . . . . . . . . . . . .> FROM fgedudb.fgedu_orders
. . . . . . . . . . . . . . . .> WHERE order_date >= ‘2026-01-01’
. . . . . . . . . . . . . . . .> GROUP BY order_date
. . . . . . . . . . . . . . . .> ORDER BY order_date;
# 输出示例:
+————-+—————+————–+
| order_date | total_amount | order_count |
+————-+—————+————–+
| 2026-01-01 | 100000.00 | 1000 |
| 2026-01-02 | 95000.00 | 950 |
| 2026-01-03 | 110000.00 | 1100 |
+————-+—————+————–+
3 rows selected (0.125 seconds)
# 多维分析查询
0: jdbc:kylin://192.168.1.51:7070> SELECT
. . . . . . . . . . . . . . . .> u.name as user_name,
. . . . . . . . . . . . . . . .> p.name as product_name,
. . . . . . . . . . . . . . . .> SUM(o.order_amount) as total_amount
. . . . . . . . . . . . . . . .> FROM fgedudb.fgedu_orders o
. . . . . . . . . . . . . . . .> JOIN fgedudb.fgedu_users u ON o.user_id = u.id
. . . . . . . . . . . . . . . .> JOIN fgedudb.fgedu_products p ON o.product_id = p.id
. . . . . . . . . . . . . . . .> WHERE o.order_date >= ‘2026-01-01’
. . . . . . . . . . . . . . . .> GROUP BY u.name, p.name
. . . . . . . . . . . . . . . .> ORDER BY total_amount DESC
. . . . . . . . . . . . . . . .> LIMIT 10;
# 输出示例:
+————+—————+—————+
| user_name | product_name | total_amount |
+————+—————+—————+
| user001 | product_A | 50000.00 |
| user002 | product_B | 45000.00 |
| user003 | product_A | 40000.00 |
+————+—————+—————+
7.2 查询性能分析
0: jdbc:kylin://192.168.1.51:7070> EXPLAIN PLAN FOR
. . . . . . . . . . . . . . . .> SELECT * FROM fgedudb.fgedu_orders WHERE order_date = ‘2026-01-01’;
# 输出示例:
+——————————————————————+
| PLAN |
+——————————————————————+
| OLAPToEnumerableConverter |
| OLAPLimitRel(fetch=[], offset=[]) |
| OLAPSortRel(sort0=[$0], dir0=[ASC]) |
| OLAPAggregateRel(group=[{0}], EXPR$1=[COUNT()]) |
| OLAPProjectRel(order_date=[$0]) |
| OLAPTableScan(table=[[fgedudb, fgedu_orders]]) |
+——————————————————————+
# 查看查询统计
$ curl -X GET \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
http://192.168.1.51:7070/kylin/api/query/stats
# 输出示例:
{
“total_queries”: 10000,
“avg_query_time”: 125,
“max_query_time”: 5000,
“cache_hit_rate”: 0.85
}
7.3 查询优化建议
1. 使用分区裁剪
# 在WHERE条件中使用分区列
SELECT * FROM fgedudb.fgedu_orders
WHERE order_date >= ‘2026-01-01’ AND order_date < '2026-02-01';
2. 使用维度过滤
# 在WHERE条件中使用维度列
SELECT * FROM fgedudb.fgedu_orders
WHERE order_status = 'COMPLETED';
3. 避免SELECT *
# 只选择需要的列
SELECT order_date, SUM(order_amount)
FROM fgedudb.fgedu_orders
GROUP BY order_date;
4. 使用LIMIT
# 限制返回结果数量
SELECT * FROM fgedudb.fgedu_orders LIMIT 100;
5. 使用预聚合
# 使用Cube中预计算的度量
SELECT SUM(order_amount) FROM fgedudb.fgedu_orders;
8. 监控与运维
Kylin提供完善的监控和管理功能,本节介绍常用的运维方法。更多学习教程公众号风哥教程itpux_com
8.1 Web UI监控
http://192.168.1.51:7070/kylin
# Web UI功能:
1. Dashboard:系统概览
2. Modeling:数据模型管理
3. Monitor:任务监控
4. System:系统配置
# 查看任务状态
步骤1:点击”Monitor”
步骤2:查看任务列表
步骤3:点击任务查看详情
# 查看Cube状态
步骤1:点击”Modeling” -> “Models”
步骤2:选择Cube
步骤3:查看构建状态和统计信息
8.2 日志管理
$ tail -f /data/kylin/logs/kylin.log
# 输出示例:
2026-04-04 10:00:00,000 INFO [main] org.apache.kylin.rest.service.CubeService: Building cube fgedu_order_cube
2026-04-04 10:00:00,000 INFO [main] org.apache.kylin.engine.spark.SparkCubing: Starting Spark cubing job
2026-04-04 10:00:00,000 INFO [main] org.apache.kylin.engine.spark.SparkCubing: Spark cubing job completed
# 查看查询日志
$ tail -f /data/kylin/logs/kylin_query.log
# 输出示例:
2026-04-04 10:00:00,000 INFO [query-1] org.apache.kylin.query.routing.QueryRouter: Query routed to cube fgedu_order_cube
2026-04-04 10:00:00,000 INFO [query-1] org.apache.kylin.query.executor.QueryExecutor: Query executed in 125ms
# 配置日志级别
# vi /data/kylin/conf/kylin-server-log4j.properties
log4j.logger.org.apache.kylin=INFO
log4j.logger.org.apache.kylin.query=DEBUG
8.3 运维命令
$ $KYLIN_HOME/bin/kylin.sh start
# 停止Kylin
$ $KYLIN_HOME/bin/kylin.sh stop
# 重启Kylin
$ $KYLIN_HOME/bin/kylin.sh restart
# 检查状态
$ $KYLIN_HOME/bin/kylin.sh status
# 输出示例:
Kylin is running (pid: 12345)
# 清理元数据
$ $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.MetadataCleanupJob
# 备份元数据
$ $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.MetadataBackupJob -output /backup/kylin_metadata
# 恢复元数据
$ $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.MetadataRestoreJob -input /backup/kylin_metadata
9. 升级与迁移
Kylin升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com
9.1 版本升级
$ $KYLIN_HOME/bin/kylin.sh version
Kylin version: 4.0.0
# 备份元数据
$ $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.MetadataBackupJob -output /backup/kylin_metadata_$(date +%Y%m%d)
# 备份配置
# cp -r /data/kylin/conf /backup/kylin_conf_$(date +%Y%m%d)
# 停止服务
$ $KYLIN_HOME/bin/kylin.sh stop
# 下载新版本
# cd /data
# wget https://archive.apache.org/dist/kylin/apache-kylin-5.0.0/apache-kylin-5.0.0-bin.tar.gz
# 备份旧版本
# mv /data/kylin /data/kylin-4.0.0
# 解压新版本
# tar -xzf apache-kylin-5.0.0-bin.tar.gz
# mv apache-kylin-5.0.0-bin kylin
# 恢复配置
# cp -r /backup/kylin_conf_*/* /data/kylin/conf/
# 设置权限
# chown -R kylin:kylin /data/kylin
# 启动服务
$ $KYLIN_HOME/bin/kylin.sh start
# 验证版本
$ $KYLIN_HOME/bin/kylin.sh version
Kylin version: 5.0.0
9.2 配置迁移
# tar -czf kylin_backup_$(date +%Y%m%d).tar.gz \
/data/kylin/conf \
/data/kylin/logs \
/backup/kylin_metadata
# 迁移到新服务器
# scp kylin_backup_*.tar.gz root@newserver:/backup/
# 在新服务器解压
# tar -xzf kylin_backup_*.tar.gz -C /
# 恢复元数据
$ $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.MetadataRestoreJob -input /backup/kylin_metadata
# 启动服务
$ $KYLIN_HOME/bin/kylin.sh start
10. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解Kylin的实际应用。更多学习教程www.fgedu.net.cn
10.1 生产环境完整配置
# vi /data/kylin/conf/kylin.properties
# 服务器配置
kylin.server.mode=all
kylin.server.cluster-servers=192.168.1.51:7070,192.168.1.52:7070
# 元数据配置
kylin.metadata.url=kylin_metadata@hbase
# 存储配置
kylin.storage.url=hbase
# 查询配置
kylin.query.timeout=600000
kylin.query.max-concurrent-queries=50
kylin.query.memory-budget-bytes=2147483648
kylin.query.cache.enabled=true
# 构建配置
kylin.job.max-concurrent-jobs=20
kylin.build.parallel.enabled=true
kylin.build.parallel.max-threads=20
# Spark配置
kylin.build.spark-conf.spark.master=yarn
kylin.build.spark-conf.spark.submit.deployMode=cluster
kylin.build.spark-conf.spark.executor.instances=8
kylin.build.spark-conf.spark.executor.cores=4
kylin.build.spark-conf.spark.executor.memory=16g
kylin.build.spark-conf.spark.driver.memory=8g
kylin.build.spark-conf.spark.sql.shuffle.partitions=400
kylin.build.spark-conf.spark.sql.adaptive.enabled=true
# 安全配置
kylin.security.enabled=true
kylin.security.ldap.server=ldap://192.168.1.51:389
kylin.security.ldap.username-format=uid=%s,ou=users,dc=fgedu,dc=net
10.2 高可用配置
# 在多个节点部署Kylin
# 节点1(Query + Job)
kylin.server.mode=all
kylin.server.cluster-servers=192.168.1.51:7070,192.168.1.52:7070
# 节点2(Query)
kylin.server.mode=query
kylin.server.cluster-servers=192.168.1.51:7070,192.168.1.52:7070
# 负载均衡配置
# vi /etc/nginx/conf.d/kylin.conf
upstream kylin_servers {
least_conn;
server 192.168.1.51:7070;
server 192.168.1.52:7070;
}
server {
listen 80;
server_name kylin.fgedu.net.cn;
location / {
proxy_pass http://kylin_servers;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
10.3 性能调优实战
$ beeline -u “jdbc:kylin://192.168.1.51:7070/fgedu_project” -n ADMIN -p KYLIN
0: jdbc:kylin://192.168.1.51:7070> SELECT
. . . . . . . . . . . . . . . .> order_date,
. . . . . . . . . . . . . . . .> SUM(order_amount) as total_amount,
. . . . . . . . . . . . . . . .> COUNT(*) as order_count
. . . . . . . . . . . . . . . .> FROM fgedudb.fgedu_orders
. . . . . . . . . . . . . . . .> WHERE order_date BETWEEN ‘2026-01-01’ AND ‘2026-03-31’
. . . . . . . . . . . . . . . .> GROUP BY order_date
. . . . . . . . . . . . . . . .> ORDER BY order_date;
# 输出示例:
+————-+—————+————–+
| order_date | total_amount | order_count |
+————-+—————+————–+
| 2026-01-01 | 100000.00 | 1000 |
…
+————-+—————+————–+
90 rows selected (0.156 seconds)
# 查看Cube统计
$ curl -X GET \
-H “Authorization: Basic QURNSU46S1lMSU4=” \
http://192.168.1.51:7070/kylin/api/cubes/fgedu_order_cube
# 输出示例:
{
“name”: “fgedu_order_cube”,
“size_kb”: 1048576,
“source_tables”: 3,
“input_records”: 10000000,
“input_records_size”: 10737418240,
“last_build_time”: 1712217600000,
“last_build_duration”: 3600000
}
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
