硬件配置和大小建议
本指南讨论了我们关于开源用户的硬件、计算、内存和磁盘配置的通用建议。如果您想简化您的设置,我们建议使用 ClickHouse Cloud,因为它会自动扩展并适应您的工作负载,同时最大限度地降低与基础设施管理相关的成本。
您的 ClickHouse 集群的配置高度依赖于您的应用程序的用例和工作负载模式。在规划您的架构时,您必须考虑以下因素
- 并发性(每秒请求数)
- 吞吐量(每秒处理的行数)
- 数据量
- 数据保留策略
- 硬件成本
- 维护成本
磁盘
您应该与 ClickHouse 一起使用的磁盘类型取决于数据量、延迟或吞吐量要求。
优化性能
为了最大化性能,我们建议直接挂载 来自 AWS 的预配置 IOPS SSD 卷 或您的云提供商的同等产品,这优化了 IO。
优化存储成本
为了降低成本,您可以使用 通用 SSD EBS 卷。
您还可以使用 SSD 和 HDD 在 热/温/冷架构 中实现分层存储。或者,也可以使用 AWS S3 进行存储,以分离计算和存储。请参阅我们的指南,了解如何将开源 ClickHouse 与计算和存储分离一起使用 此处。计算和存储分离在 ClickHouse Cloud 中默认可用。
CPU
我应该使用哪个 CPU?
您应该使用的 CPU 类型取决于您的使用模式。然而,总的来说,具有许多频繁并发查询、处理更多数据或使用计算密集型 UDF 的应用程序将需要更多的 CPU 核心。
低延迟或面向客户的应用程序
对于 10 毫秒级的延迟要求(例如面向客户的工作负载),我们建议使用 EC2 i3 系列 或 i4i 系列 来自 AWS 或您的云提供商的同等产品,它们是 IO 优化的。
高并发应用程序
对于需要优化并发性(每秒 100 多个查询)的工作负载,我们建议使用来自 AWS 的 计算优化 C 系列 或您的云提供商的同等产品。
数据仓库用例
对于数据仓库工作负载和临时分析查询,我们建议使用来自 AWS 的 R 类型系列 或您的云提供商的同等产品,因为它们是内存优化的。
CPU 利用率应该是多少?
ClickHouse 没有标准的 CPU 利用率目标。使用诸如 iostat 之类的工具来衡量平均 CPU 使用率,并相应地调整服务器的大小以管理意外的流量峰值。但是,对于具有临时查询的分析或数据仓库用例,您应该将目标 CPU 利用率设为 10-20%。
我应该使用多少 CPU 核心?
您应该使用的 CPU 数量取决于您的工作负载。但是,我们通常根据您的 CPU 类型推荐以下内存与 CPU 核心比率
例如,当使用 M 类型 CPU 时,我们建议每 25 个 CPU 核心配置 100GB 内存。要确定适合您应用程序的内存量,必须分析您的内存使用情况。您可以阅读 本指南,了解如何调试内存问题 或使用 内置的可观察性仪表板 来监控 ClickHouse。
内存
与您选择 CPU 一样,您选择的内存与存储比率以及内存与 CPU 比率取决于您的具体情况。然而,总的来说,您拥有的内存越多,查询运行速度就越快。如果您的用例对价格敏感,则较低的内存量也可以工作,因为可以启用设置(max_bytes_before_external_group_by 和 max_bytes_before_external_sort)以允许将数据溢出到磁盘,但请注意,这可能会显着影响查询性能。
内存与存储比率应该是多少?
对于低数据量,1:1 的内存与存储比率是可以接受的,但总内存不应低于 8GB。
对于数据保留期较长或数据量较大的用例,我们建议使用 1:100 到 1:130 的内存与存储比率。例如,如果您存储 10TB 的数据,则每个副本 100GB 的 RAM。
对于频繁访问的用例(例如面向客户的工作负载),我们建议使用更多的内存,内存与存储比率为 1:30 到 1:50。
副本
我们建议每个分片至少有三个副本(或两个副本,如果使用 Amazon EBS)。此外,我们建议在添加其他副本(水平扩展)之前垂直扩展所有副本。
ClickHouse 不会自动分片,重新分片您的数据集将需要大量的计算资源。因此,我们通常建议使用可用的最大服务器,以防止将来不得不重新分片您的数据。
考虑使用 ClickHouse Cloud,它可以自动扩展,并允许您轻松控制用例的副本数量。
大型工作负载的示例配置
ClickHouse 配置高度依赖于您的特定应用程序的需求。如果您希望我们帮助优化您的架构以获得成本和性能,请联系销售。
为了提供指导(而非建议),以下是生产环境中 ClickHouse 用户的示例配置
财富 500 强 B2B SaaS
存储 | |
每月新增数据量 | 30TB |
总存储(压缩后) | 540TB |
数据保留 | 18 个月 |
每个节点的磁盘 | 25TB |
CPU | |
并发 | 200+ 并发查询 |
副本数(包括 HA 对) | 44 |
每个节点的 vCPU | 62 |
总 vCPU | 2700 |
内存 | |
总 RAM | 11TB |
每个副本的 RAM | 256GB |
RAM 与 vCPU 比率 | 4:1 |
RAM 与磁盘比率 | 1:50 |
财富 500 强电信运营商日志记录用例
存储 | |
每月日志数据量 | 4860TB |
总存储(压缩后) | 608TB |
数据保留 | 30 天 |
每个节点的磁盘 | 13TB |
CPU | |
副本数(包括 HA 对) | 38 |
每个节点的 vCPU | 42 |
总 vCPU | 1600 |
内存 | |
总 RAM | 10TB |
每个副本的 RAM | 256GB |
RAM 与 vCPU 比率 | 6:1 |
RAM 与磁盘比率 | 1:60 |
延伸阅读
以下是使用开源 ClickHouse 的公司发布的关于架构的博客文章