pdf文档 2. Clickhouse玩转每天千亿数据-趣头条

1.10 MB 14 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
趣头条在处理每天千亿数据时使用ClickHouse遇到机器配置不足、索引优化不佳、Zookeeper压力大等问题。通过调整索引顺序、提升内存、分布式存储、优化Zookeeper配置及合并引擎选择等方法有效解决了数据处理的挑战。
AI总结
《Clickhouse玩转每天千亿数据-趣头条》王海胜总结 趣头条在使用ClickHouse处理每日千亿数据时的实践总结,主要内容如下: 1. 问题及解决方案 1.1 ClickHouse数据目录限制 • 问题 ClickHouse的数据目录不支持多盘存储,单盘容量限制大。 • 解决方案 - 推荐机器内存128G+。 - 使用软连接将表分布到不同盘,提高单机存储能力。 - 利用冷热数据分离特性优化存储。 1.2 索引排序问题 • 问题 按时间和事件类型索引(order by (timestamp, eventType))导致累时指标查询耗时过长(600亿+数据),时间索引失效,需全盘扫描。 • 解决方案 - 调整索引顺序,选择基数较低的列。 - 配置max_bytes_before_external_group_by、max_bytes_before_external_sort。 - 使用uniq、uniqCombined、uniqHLL12聚合函数。 - Join时,小表放在右边,实现右表广播。 1.3 ZooKeeper问题 • 问题 快照文件过大、ZooKeeper压力过大,导致clickhouse表只读、插入失败。 • 解决方案 - 分盘存储快照和日志文件,推荐SSD存储。 - 快照存储盘不低于1T。 - 建多套ZooKeeper集群服务clickhouse集群。 - 限制znode数量在400万以下,监控请求队列和延迟。 1.4 内存限制问题 • 问题 单查询内存超出限制(如9.37 GiB),导致失败。 • 解决方案 - 配置max_memory_usage_for_all_queries,控制内存使用。 - 使用max_bytes_before_external_group_by、max_bytes_before_external_sort和聚合函数优化内存。 - Join时优化小表位置。 1.5 集群配置问题 • 问题 早期集群配置(16核64G、1.7T SSD)存在内存、存储、CPU限制问题。 • 解决方案 - 提升机器内存到128G+。 - 使用多盘存储,分散表数据。 - 合理规划分区,了解数据特性,避免merge延迟。 1.6 查询进程崩溃问题 • 问题 max_memory_usage_for_all_queries默认值为0,导致内存超限,进程被kill。 • 解决方案 - 配置max_memory_usage_for_all_queries,限制内存使用,避免进程被终止。 2. 引擎选择 • 推荐使用ReplicatedMergeTree引擎 - 数据安全,保障业务安全。 - 支持业务无感知升级。 - 提升查询并发度。 总结:趣头条在ClickHouse运维过程中遇到并解决了存储、索引、ZooKeeper、内存和配置等多方面问题,提供了实际的优化方案。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 2 页请下载阅读 -
文档评分
请文明评论,理性发言.