
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
前言
在使用clickhouse时,官方推荐使用其付费版本ClickHouse Cloud。因为它能够根据您的工作负载自动扩缩并自适应调整,同时将与基础设施管理相关的成本降到最低。
如果不使用ClickHouse Cloud,在架构规划时需要考虑:
-
并发量(每秒请求数)
-
吞吐量(每秒处理的行数)
-
数据量
-
数据保留策略
-
硬件成本
-
维护成本
磁盘
使用磁盘的类型,取决于数据量及对延迟或吞吐量的要求,官方主要从性能和成本两方面给了建议。
1. 重视性能
重视性能场景,官方建议建议直接挂载 AWS 的预置 IOPS SSD 卷,或使用云服务商提供的同类产品,以优化 IO 性能。
关于AWS的预调配 IOPS SSD 卷:
固态硬盘(SSD)支持预调配 IOPS SSD 卷。这种卷是性能最高的 Amazon EBS 存储卷,专为需要低延迟的 IOPS 密集型和吞吐量密集型关键工作负载而设计。预调配 IOPS SSD 卷在 99.9% 的时间里可提供预置 IOPS 性能。
Amazon EBS 提供了两种类型的预调配 IOPS SSD 卷:
预调配 IOPS SSD(io2)Block Express 卷
预调配 IOPS SSD(io1)卷
2. 重视成本
在重视成本场景,推荐下面几种方案:
1)使用AWS通用型 SSD EBS 卷
关于AWS的通用型 SSD EBS 卷:
通用型 SSD 卷在各种事务性工作负载的价格和性能之间实现平衡。其中包括虚拟桌面、中型单实例数据库、延迟敏感型交互式应用程序、开发和测试环境以及启动卷。建议为大多数工作负载使用这种卷。
Amazon EBS 提供以下类型的通用型 SSD 卷:
通用型 SSD(gp3)卷
通用型 SSD(gp2)卷
2)结合SSD 和 HDD,构建冷热分层(热/暖/冷)架构
3)使用 AWS S3 作为存储后端,以实现计算与存储分离
CPU
要选择的 CPU 类型取决于负载特征。一般来说,具有大量频繁并发查询、处理数据量较大,或使用计算密集型 UDF 的应用需要更多 CPU 核心。官方一般基于 CPU 类型推荐如下内存与 CPU 核心配比:
M 型(通用场景): 4 GB:1 的内存与 CPU 核心比例
R 型(数据仓库场景): 8 GB:1 的内存与 CPU 核心比例
C 型(计算优化场景): 2 GB:1 的内存与 CPU 核心比例
如果使用AWS服务,则推荐如下:
1)低延迟或面向客户的应用
对于延迟要求在几十毫秒级(例如面向客户的工作负载),推荐使用 AWS 的 EC2 i3 系列或 i4i 系列,或者云服务商中等价的、已针对 IO 优化的实例。
2)高并发应用
对于需要重点优化并发(每秒 100+ 查询)的工作负载,推荐使用 AWS 的计算优化型 C 系列,或云服务商中等价的产品。
3)数据仓库用例
对于数据仓库工作负载和临时分析查询,推荐使用 AWS 的 R 系列或云服务商中等价的产品,因为它们是内存优化型实例。
内存
与 CPU 的选择类似,内存与存储的比例以及内存与 CPU 的比例应根据具体用例来确定。内存越大,查询运行得越快。所需的 RAM 容量通常取决于:
- 查询的复杂度;
查询中需要处理的数据量。
1. 内存与存储的比例应是多少?
对于数据量较小的场景,1:1 的内存与存储比例是可以接受的,但总内存不应低于 8GB。
对于数据保留周期较长或数据量较大的用例,官方建议采用 1:100 到 1:130 的内存与存储比例。例如,如果存储了 10TB 的数据,建议每个副本配置 100GB 的 RAM。
对于访问频繁的用例,例如面向客户的在线工作负载,官方建议使用更多内存,采用 1:30 到 1:50 的内存与存储比例。
2. 内存参数优化
如果用例对成本较为敏感,可以使用较小的内存配置,因为可以启用以下2个相关配置将部分数据落盘,但需要注意,这可能会显著影响查询性能:
max_bytes_before_external_group_by:设置决定了将 GROUP BY 临时数据写入文件系统时的 RAM 消耗阈值(以字节为单位)。如果设置为 0(默认值),则表示禁用。
max_bytes_before_external_sort:设置决定了当 RAM 不足,是否使用外部存储执行排序(在磁盘上创建临时文件),如果其值为 0(默认值),则禁用外部排序。
副本数
官方建议每个分片至少配置三个副本(或在使用 Amazon EBS 时配置两个副本)。此外,官方建议在增加额外副本(水平扩展)之前,先对所有副本进行纵向扩容。
ClickHouse 不会自动分片,对数据集重新分片将需要大量计算资源。因此,官方通常建议尽可能使用规格更大的服务器,以避免将来需要对数据重新分片。
示例配置
ClickHouse 生产用户的示例配置:
1. Fortune 500 B2B SaaS
|
类型 |
配置 | |
|---|---|---|
|
存储 |
每月新增数据量 |
30TB |
|
总存储量(压缩后) |
540TB | |
|
数据保留期 |
18 个月 | |
|
每个节点的磁盘容量 |
25TB | |
|
CPU |
并发度 |
200+ 个并发查询 |
|
副本数量(包括 HA 对) |
44 | |
|
每个节点的 vCPU 数 |
62 | |
|
总 vCPU 数 |
2700 | |
|
内存 |
总 RAM |
11TB |
|
每个副本的 RAM |
256GB | |
|
RAM 与 vCPU 比例 |
4 GB:1 | |
|
RAM 与磁盘比例 |
1:50 | |
2. Fortune 500 电信运营商(日志用例)
|
类型 |
配置 | |
|---|---|---|
|
存储 |
每月日志数据量 |
4860TB |
|
总存储(压缩后) |
608TB | |
|
数据保留期 |
30 天 | |
|
每个节点磁盘容量 |
13TB | |
|
CPU |
副本数量(包括 HA 对) |
38 |
|
每个节点 vCPU 数量 |
42 | |
|
总 vCPU 数量 |
1600 | |
|
内存 |
总 RAM 容量 |
10TB |
|
每个副本的 RAM |
256GB | |
|
RAM 与 vCPU 比率 |
6GB:1 | |
|
RAM 与磁盘比率 |
1:60 | |
出处:本文梳理自ClickHouse官网https://clickhouse.com/,对部分内容做了补充细化。



355

被折叠的 条评论
为什么被折叠?



