关键词: ClickHouse安装教程、ClickHouse部署、CentOS安装ClickHouse、ClickHouse列式数据库、OLAP数据库、ClickHouse配置、ClickHouse基础操作
前言
在当今大数据时代,ClickHouse安装教程 是每一位数据工程师、运维人员和数据分析师必须掌握的技能。ClickHouse 作为一款高性能的列式数据库管理系统(DBMS) ,专为联机分析处理(OLAP) 场景设计。无论您是要搭建实时数据分析平台、构建用户行为分析系统,还是处理海量日志数据,掌握ClickHouse安装教程 都是迈向高效数据处理的第一步。
本文将为您提供一份从零开始的ClickHouse安装教程 ,涵盖ClickHouse 的安装、配置、基础操作和进阶操作,确保 您能够顺利完成 部署并快速上手使用。
一、ClickHouse是什么?
ClickHouse 是一款开源的列式SQL数据库管理系统(DBMS) ,由俄罗斯搜索巨头 Yandex 于2009年诞生,2016年正式开源。它专为在线分析处理(OLAP) 场景设计,能够在PB级数据集 和高摄取速率 场景下实现高性能分析查询。
ClickHouse的核心特点:
- 列式存储 :数据按列独立存储,查询时只需读取用到的列,大幅减少I/O开销
- 极速查询性能 :在1亿行数据上执行分析查询仅需92毫秒 ,吞吐量超过每秒10亿行
- 高压缩率 :数据压缩比可达6-10倍 ,显著节省存储空间
- SQL支持 :支持标准SQL语法,学习成本低,上手快
- 分布式架构 :采用 shared-nothing 架构,支持线性扩展 ,可通过分片和副本实现高可用 和水平扩展
ClickHouse适用于以下场景:
- 实时数据分析与BI报表
- 用户行为与点击流分析
- 日志数据存储与分析
- 物联网(IoT)数据处理
- 广告投放与效果分析
- 金融交易数据分析
二、ClickHouse安装包下载
🔽 【点击下载】ClickHouse安装包(网盘)
通过网盘分享的文件:clickhouse
链接: https://pan.baidu.com/s/1wKgSAOsGTOMonxguaPMoYw?pwd=7i2s
本教程使用的 ClickHouse版本为20.11.4.13 ,需要下载以下四个安装包:
clickhouse-common-static-20.11.4.13.tgz--- 通用静态库clickhouse-common-static-dbg-20.11.4.13.tgz--- 调试符号库clickhouse-server-20.11.4.13.tgz--- 服务端clickhouse-client-20.11.4.13.tgz--- 客户端
三、ClickHouse安装环境要求
📌 安装环境:CentOS操作系统
本教程基于 CentOS 7/8 系统进行安装部署。
CentOS安装参考: https://www.cnblogs.com/dbbull/p/20891421
硬件与系统要求:
| 项目 | 要求 |
|---|---|
| 操作系统 | CentOS 7/8、RedHat或其他RPM系Linux |
| 磁盘空间 | 至少 2.5 GB 用于安装 |
| 内存 | 建议 4 GB 以上(生产环境建议 16 GB+ ) |
| CPU | x86_64架构 |
| 网络 | 分布式部署建议 10 Gbit 网络 |
生产环境建议:
- 禁用操作系统的 swap 文件
- 预估数据量并计算压缩系数
- 如需高可用,规划副本数量
四、ClickHouse安装教程
第1步:创建ClickHouse用户和组
ClickHouse建议使用专用用户运行,以提高安全性。
bash
# 创建数据目录
mkdir /clickhouse
# 创建用户组和用户
groupadd -g 60001 clickhouse
useradd -u 61001 -g clickhouse clickhouse
# 设置目录权限
chown -R clickhouse:clickhouse /clickhouse
chmod -R 775 /clickhouse
# 设置用户密码
echo "clickhouse" | passwd --stdin clickhouse

第2步:关闭防火墙和SELINUX
⚠️ 注意: 生产环境中请根据安全策略谨慎操作,建议配置防火墙规则而非直接关闭。
bash
# 禁用SELINUX
echo "SELINUX=disabled" > /etc/selinux/config
echo "#SELINUXTYPE=targeted " >> /etc/selinux/config
cat /etc/selinux/config
setenforce 0
# 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
为什么要关闭SELINUX? SELINUX可能阻止ClickHouse对数据目录的读写操作以及网络端口的绑定。

第3步:创建所需目录
按以下结构创建ClickHouse的各个目录:
bash
mkdir -p /clickhouse/app # 应用程序目录
mkdir -p /clickhouse/data # 数据存储目录
mkdir -p /clickhouse/log # 日志目录
mkdir -p /clickhouse/etc # 配置文件目录
mkdir -p /clickhouse/soft # 安装包存放目录

第4步:上传ClickHouse安装包
bash
# 安装lrzsz工具(用于文件上传)
yum install lrzsz -y
# 进入安装包目录
cd /clickhouse/soft
# 执行rz命令上传四个安装包
rz
📤 使用
rz命令上传之前下载好的四个tgz安装包 。
第5步:安装ClickHouse
⚠️ 以下操作使用root用户执行
5.1 安装通用静态库
bash
cd /clickhouse/app
tar zxf /clickhouse/soft/clickhouse-common-static-20.11.4.13.tgz
mv clickhouse-common-static-20.11.4.13 clickhouse-common-static
./clickhouse-common-static/install/doinst.sh
5.2 安装调试符号库
bash
tar zxf /clickhouse/soft/clickhouse-common-static-dbg-20.11.4.13.tgz
mv clickhouse-common-static-dbg-20.11.4.13 clickhouse-common-static-dbg
./clickhouse-common-static-dbg/install/doinst.sh
5.3 安装服务端(核心配置)
bash
tar zxf /clickhouse/soft/clickhouse-server-20.11.4.13.tgz
mv clickhouse-server-20.11.4.13 clickhouse-server
修改安装脚本中的目录配置:
bash
vi clickhouse-server/install/doinst.sh
# 将以下变量修改为:
CLICKHOUSE_DATADIR=${CLICKHOUSE_DATADIR:=/clickhouse/data}
CLICKHOUSE_LOGDIR=${CLICKHOUSE_LOGDIR:=/clickhouse/log}
修改主配置文件 config.xml:
bash
vi /clickhouse/app/clickhouse-server/etc/clickhouse-server/config.xml
修改以下配置项:
xml
<!-- 日志路径 -->
<log>/clickhouse/log/clickhouse-server.log</log>
<errorlog>/clickhouse/log/clickhouse-server.err.log</errorlog>
<!-- 数据路径 -->
<path>/clickhouse/data</path>
<tmp_path>/clickhouse/data/tmp/</tmp_path>
<user_files_path>/clickhouse/data/user_files/</user_files_path>
<format_schema_path>/clickhouse/data/format_schemas/</format_schema_path>
<!-- 访问权限路径 -->
<path>/clickhouse/data/access/</path>
<!-- 监听所有IP地址(允许远程连接) -->
<listen_host>::</listen_host>
<!-- 设置时区为东八区 -->
<timezone>Asia/Shanghai</timezone>
修改用户配置文件 users.xml:
bash
vi /clickhouse/app/clickhouse-server/etc/clickhouse-server/users.xml
xml
<!-- 启用访问管理(允许创建用户和分配权限) -->
<access_management>1</access_management>
<!-- 设置单查询最大内存使用量(10GB) -->
<max_memory_usage>10000000000</max_memory_usage>
执行服务端安装:
bash
./clickhouse-server/install/doinst.sh
5.4 安装客户端
bash
tar zxf /clickhouse/soft/clickhouse-client-20.11.4.13.tgz
mv clickhouse-client-20.11.4.13 clickhouse-client
./clickhouse-client/install/doinst.sh
5.5 配置软链接
bash
cd /etc/
mv /etc/clickhouse-* /clickhouse/etc/
ln -sf /clickhouse/etc/* .
ls -ls /etc/click*
5.6 设置最终权限
bash
chown -R clickhouse:clickhouse /clickhouse
chmod -R 755 /clickhouse



第6步:启动ClickHouse
⚠️ 切换到clickhouse用户启动(重要!)
bash
su - clickhouse
nohup clickhouse-server --config=/etc/clickhouse-server/config.xml &
验证启动状态:
bash
ps -ef | grep clickhouse

第7步:连接ClickHouse
默认无密码,使用以下命令连接:
bash
clickhouse-client -h 192.168.80.80 --port 9000 --user default --password
💡 参数说明:
-h:指定服务器IP地址--port:指定TCP端口(默认9000)--user:指定用户名(默认default)--password:密码(默认空,直接回车)
第8步:启动报错及解决方法
如果启动时遇到以下错误:
DB::Exception: Effective user of the process (root) does not match the owner of the data (clickhouse). Run under 'sudo -u clickhouse'.
原因: 进程的有效用户(root)与数据所有者(clickhouse)不匹配。
解决方法:
bash
# 方法一:使用systemctl启动(推荐)
sudo systemctl start clickhouse-server
# 方法二:使用sudo -u切换用户启动
sudo -u clickhouse clickhouse-server --config=/etc/clickhouse-server/config.xml
# 方法三:给debug目录添加权限
chmod 755 /usr/lib/debug
chmod 755 /usr/lib/debug/usr
chmod 755 /usr/lib/debug/usr/bin
chmod 644 /usr/lib/debug/usr/bin/clickhouse 2>/dev/null
五、ClickHouse基础操作
安装完成后,让我们通过一些基础操作来验证和使用ClickHouse。
5.1 数据库操作
sql
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE IF NOT EXISTS test_db;
-- 切换数据库
USE test_db;
-- 删除数据库
DROP DATABASE IF EXISTS test_db;
5.2 建表操作
ClickHouse中最常用的表引擎是 MergeTree 系列。
sql
-- 创建一张简单的MergeTree表
CREATE TABLE my_table (
id UInt32,
name String,
age UInt8,
create_date Date
)
ENGINE = MergeTree()
ORDER BY id;
字段类型说明:
UInt32:无符号32位整数String:字符串类型UInt8:无符号8位整数Date:日期类型
5.3 插入数据
sql
-- 单条插入
INSERT INTO my_table (id, name, age, create_date)
VALUES (1, '张三', 25, '2026-01-01');
-- 批量插入
INSERT INTO my_table VALUES
(2, '李四', 30, '2026-01-02'),
(3, '王五', 28, '2026-01-03');
5.4 查询数据
sql
-- 查询所有数据
SELECT * FROM my_table;
-- 条件查询
SELECT * FROM my_table WHERE age > 25;
-- 聚合查询
SELECT COUNT(*) AS total, AVG(age) AS avg_age FROM my_table;
-- 分组查询
SELECT age, COUNT(*) AS cnt
FROM my_table
GROUP BY age
ORDER BY cnt DESC;
5.5 其他常用命令
sql
-- 查看当前数据库中的所有表
SHOW TABLES;
-- 查看表结构
DESCRIBE my_table;
-- 查看建表语句
SHOW CREATE TABLE my_table;
六、ClickHouse进阶操作
6.1 分区表
分区可以提高查询性能和数据管理效率。只有 MergeTree系列 的表引擎支持分区。
sql
-- 按月分区的表
CREATE TABLE orders (
order_id UInt32,
user_id UInt32,
amount Float64,
order_date Date
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(order_date) -- 按月分区
ORDER BY (order_date, order_id);
分区管理操作:
sql
-- 查看表的分区信息
SELECT * FROM system.parts WHERE table = 'orders';
-- 删除指定分区
ALTER TABLE orders DROP PARTITION 202601;
-- 分离分区(移动到detached目录)
ALTER TABLE orders DETACH PARTITION 202602;
-- 重新附加分区
ALTER TABLE orders ATTACH PARTITION 202602;
6.2 副本(Replication)
副本通过在多台服务器上维护数据的多份拷贝来确保高可用性 和容错性。
使用副本需要配置 ZooKeeper 或 ClickHouse Keeper。
sql
-- 创建带副本的表(需要配置ZooKeeper)
CREATE TABLE replicated_table (
id UInt32,
name String,
create_date Date
)
ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/replicated_table', -- ZooKeeper路径
'{replica}' -- 副本名称
)
ORDER BY id;
6.3 分片(Sharding)
当数据量过大 单台服务器无法承载,或查询速度过慢时,可以使用分片将数据分散到多台服务器。
sql
-- 创建分布式表(不存储数据,只做查询路由)
CREATE TABLE distributed_table ON CLUSTER test_cluster (
id UInt32,
name String,
create_date Date
)
ENGINE = Distributed(
'test_cluster', -- 集群名称
'default', -- 数据库名
'local_table', -- 本地表名
rand() -- 分片键(随机分配)
);
6.4 集群配置
集群配置在 config.xml 的 remote_servers 部分定义。
xml
<remote_servers>
<test_cluster>
<shard>
<replica>
<host>192.168.80.81</host>
<port>9000</port>
</replica>
<replica>
<host>192.168.80.82</host>
<port>9000</port>
</replica>
</shard>
</test_cluster>
</remote_servers>
七、ClickHouse配置详解
7.1 主配置文件 config.xml
主配置文件位于 /etc/clickhouse-server/config.xml。
核心配置项:
| 配置项 | 说明 | 示例值 |
|---|---|---|
<logger><log> |
日志文件路径 | /clickhouse/log/clickhouse-server.log |
<logger><errorlog> |
错误日志路径 | /clickhouse/log/clickhouse-server.err.log |
<http_port> |
HTTP端口 | 8123 |
<tcp_port> |
TCP端口 | 9000 |
<listen_host> |
监听地址 | ::(所有地址) |
<timezone> |
时区 | Asia/Shanghai |
<max_connections> |
最大连接数 | 4096 |
<path> |
数据存储路径 | /clickhouse/data |
最佳实践: 保持默认的 config.xml 文件不作修改 ,将自定义配置放入 config.d/ 目录中。
7.2 用户配置文件 users.xml
用户配置文件位于 /etc/clickhouse-server/users.xml。
核心配置项:
| 配置项 | 说明 | 示例值 |
|---|---|---|
<access_management> |
启用SQL用户管理 | 1 |
<max_memory_usage> |
单查询最大内存 | 10000000000(10GB) |
<password> |
用户密码 | 明文或SHA256 |
配置示例:
xml
<users>
<default>
<password></password> <!-- 空密码 -->
<networks>
<ip>::/0</ip> <!-- 允许所有IP访问 -->
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
</users>
7.3 配置合并机制
ClickHouse支持多配置文件合并:
- 主配置文件
config.xml优先加载 config.d/目录下的配置文件按字母顺序合并- 可以使用
replace属性替换整个节点 - 可以使用
remove属性删除节点
7.4 查看最终配置
ClickHouse会将所有配置文件合并后存储在预处理目录中:
bash
cat /var/lib/clickhouse/preprocessed_configs/config.xml
总结
至此,您已经完成了一份完整的 ClickHouse安装教程 学习之旅。从 ClickHouse 的基本概念、安装包下载、环境准备,到详细的安装步骤 、基础操作 、进阶功能 (分区、副本、分片、集群)以及配置文件详解 ,我们全面覆盖 了 ClickHouse安装 和使用的核心知识。
掌握 ClickHouse安装教程 只是第一步,ClickHouse 的强大功能远不止于此。建议您在实际项目中不断实践 ,深入探索 ClickHouse 的查询优化、数据导入导出、监控告警等高级特性。

