ClickHouse 是一款高性能的列式数据库管理系统,特别适合用于大数据分析。以下是 ClickHouse 的安装与基本配置步骤,涵盖了在常见平台(如 Linux)上的安装和基础配置。
1. 安装 ClickHouse
在 Linux (Ubuntu/Debian) 上安装
在 Ubuntu 或 Debian 上安装 ClickHouse 非常简单,可以通过官方的 APT 仓库安装。
-
更新系统包管理器
bashsudo apt-get update
-
安装 HTTPS 传输工具
bashsudo apt-get install apt-transport-https ca-certificates dirmngr
-
添加 ClickHouse APT 源
bashsudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
-
安装 ClickHouse Server 和客户端
bashsudo apt-get update sudo apt-get install clickhouse-server clickhouse-client
-
启动 ClickHouse 服务
bashsudo service clickhouse-server start
-
检查 ClickHouse 服务状态
bashsudo service clickhouse-server status
在 CentOS/RHEL 上安装
对于 CentOS/RHEL 系统,也可以通过官方 RPM 仓库安装 ClickHouse。
-
添加 ClickHouse YUM 源
bashsudo yum install -y yum-utils sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
-
安装 ClickHouse Server 和客户端
bashsudo yum install -y clickhouse-server clickhouse-client
-
启动 ClickHouse 服务
bashsudo service clickhouse-server start
-
检查服务状态
bashsudo service clickhouse-server status
2. 配置 ClickHouse
ClickHouse 的默认配置文件位于 /etc/clickhouse-server/config.xml
,其中包含了所有服务的配置选项。以下是一些常见的配置调整:
2.1 配置监听地址
默认情况下,ClickHouse 监听所有网络接口的 8123(HTTP)和 9000(TCP)端口。如果需要更改绑定地址,可以在配置文件中修改。
-
编辑
/etc/clickhouse-server/config.xml
,找到<listen_host>
部分:xml<listen_host>::</listen_host> <!-- 默认监听所有接口 -->
可以将 ::
改为特定的 IP 地址,如 127.0.0.1
以限制为本地访问。
2.2 配置存储路径
ClickHouse 的数据默认存储在 /var/lib/clickhouse/
目录下。你可以修改数据存储路径来存储在其他磁盘或分区。
-
编辑
/etc/clickhouse-server/config.xml
文件中的<path>
标签:xml<path>/your/custom/path/</path>
2.3 配置日志文件路径
ClickHouse 的日志文件默认存放在 /var/log/clickhouse-server/
目录中,可以修改为其他路径。
-
修改
<logger>
部分:xml<logger> <log>/your/custom/path/clickhouse-server.log</log> <errorlog>/your/custom/path/clickhouse-server.err.log</errorlog> <size>1000M</size> <count>10</count> </logger>
2.4 配置用户权限
默认的用户名为 default
,无密码。如果你想配置用户权限,可以在 /etc/clickhouse-server/users.xml
文件中进行修改:
-
配置用户:
xml<users> <default> <password>your_password</password> <!-- 设置密码 --> <networks> <ip>::/0</ip> <!-- 默认允许所有 IP 访问 --> </networks> <profile>default</profile> <!-- 分配权限 --> </default> </users>
3. 使用 ClickHouse 客户端
安装和配置完成后,可以通过 ClickHouse 客户端连接并执行查询。
-
连接 ClickHouse
bashclickhouse-client
-
创建数据库
sqlCREATE DATABASE mydb;
-
创建表
sqlCREATE TABLE mydb.mytable ( id UInt32, name String, age UInt8 ) ENGINE = MergeTree() ORDER BY id;
-
插入数据
sqlINSERT INTO mydb.mytable VALUES (1, 'Alice', 30), (2, 'Bob', 25);
-
查询数据
sqlSELECT * FROM mydb.mytable;
4. 常见性能优化配置
ClickHouse 是为高性能设计的,但你仍然可以通过一些配置来进一步优化性能。
4.1 调整最大并行查询数
可以调整最大并行查询数来控制并发量:
-
修改
/etc/clickhouse-server/config.xml
文件中的<max_concurrent_queries>
:xml<max_concurrent_queries>100</max_concurrent_queries>
4.2 优化 MergeTree 引擎参数
MergeTree
是 ClickHouse 中最常用的表引擎,提供了高效的列式存储和查询性能。以下是一些常用的 MergeTree 参数调整:
-
min_bytes_for_wide_part: 定义使用宽数据部分的最小文件大小。
-
index_granularity: 设置索引粒度,以平衡查询性能和存储空间。
sqlCREATE TABLE mytable ( id UInt32, name String ) ENGINE = MergeTree() ORDER BY id SETTINGS index_granularity = 8192;
4.3 压缩设置
可以通过配置文件中的压缩设置来优化存储效率:
-
在
/etc/clickhouse-server/config.xml
中的<compression>
节点中添加配置:xml<compression> <case> <min_part_size>10000000000</min_part_size> <min_part_size_ratio>0.01</min_part_size_ratio> <method>zstd</method> </case> </compression>
5. 启动和管理服务
-
启动服务:
bashsudo service clickhouse-server start
-
停止服务:
bashsudo service clickhouse-server stop
-
重启服务:
bashsudo service clickhouse-server restart
6. 检查服务状态:
bash
sudo service clickhouse-server status
这一步能帮助你确认 ClickHouse 服务是否正常运行,出现问题时可以查看日志进行排查。
6. 安全设置
如果 ClickHouse 是对外提供服务,建议进行以下安全设置:
-
防火墙配置:仅允许可信任的 IP 地址访问 ClickHouse 的 HTTP 和 TCP 端口(默认 8123 和 9000)。
bashsudo ufw allow from [your-trusted-ip] to any port 8123 sudo ufw allow from [your-trusted-ip] to any port 9000
-
启用 SSL:通过配置 ClickHouse 支持 HTTPS 安全访问。你可以在配置文件中设置 SSL 证书路径。
xml<https_port>8443</https_port> <openSSL> <server> <certificateFile>/path/to/certificate.crt</certificateFile> <privateKeyFile>/path/to/private.key</privateKeyFile> </server> </openSSL>
这样,你就能通过 HTTPS 安全地访问 ClickHouse。
总结
ClickHouse 是一款高效的列式数据库,安装和配置都比较简单。通过调整配置文件和合理设置用户权限,可以确保 ClickHouse 在不同环境下的高性能运行。