1. 首页 > 软件安装教程 > 正文

Kylin安装配置-Kylin大数据分析安装配置_升级迁移详细过程

1. Kylin概述与环境规划

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据集的亚秒级查询。更多学习教程www.fgedu.net.cn

1.1 Kylin版本说明

Kylin目前主要版本为5.0,本教程以Kylin 5.0为例进行详细讲解。

# 查看Kylin版本
$ /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 环境规划

本次安装环境规划如下:

Kylin节点:
主机名: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 依赖环境安装

# 安装OpenJDK 11
# 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 创建用户和目录

# 创建kylin用户
# 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

# 下载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

# 配置kylin.properties
# 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

风哥提示:Kylin依赖Hadoop、Hive、HBase等组件,安装前请确保这些组件正常运行。建议使用独立的HBase命名空间存储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构建配置

# 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

生产环境建议:生产环境建议分离Query和Job服务。Query服务器配置更多内存用于查询,Job服务器配置更多资源用于构建。

5. 数据模型配置

Kylin数据模型是OLAP分析的基础,本节介绍数据模型的创建方法。from:www.itpux.com

5.1 创建项目

# 通过Web UI创建项目
步骤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 创建数据源

# 加载Hive表
步骤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

风哥提示:数据模型设计是Kylin性能的关键。建议根据查询模式选择合适的维度和度量,避免过度膨胀。

6. Cube构建与优化

Cube是Kylin的核心概念,本节介绍Cube的创建和优化方法。更多学习教程www.fgedu.net.cn

6.1 创建Cube

# 创建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

# 构建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优化

# 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 查询示例

# 连接Kylin
$ 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;

风哥提示:Kylin查询性能取决于Cube设计。建议根据查询模式优化Cube,减少Cuboid数量。

8. 监控与运维

Kylin提供完善的监控和管理功能,本节介绍常用的运维方法。更多学习教程公众号风哥教程itpux_com

8.1 Web UI监控

# 访问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
$ $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

生产环境建议:升级前必须备份元数据。Kylin元数据存储在HBase中,建议定期备份。

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
}

风哥提示:Kylin作为高性能OLAP引擎,适合大规模数据分析场景。生产环境建议配置高可用集群,合理设计Cube减少存储空间。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息