转转自助分析场景下OLAP选型及ClickHouse优化实践
OLAP选型背景
转转自助分析场景下,行为数据查询面临扫描数据量大、精确去重/近似去重/分组计算量大等挑战。传统离线数仓无法满足用户个性化报表需求,而自助分析平台需要保证高可用、稳定快速,支持任意指标、任意维度并秒级给出反馈。
OLAP引擎选型考量
选型考量因素包括:数据量级(亿级/百亿级/千亿级)、时效性(毫秒级/秒级/分钟级)、灵活性(聚合结果/明细数据)、数据链路(离线/实时)、支撑能力(高并发、即席查询)、复杂性(引擎架构门槛低、运维简单、扩展性强)。
OLAP引擎选型对比
对比了Kylin、Druid、Impala、Presto、ClickHouse、Doris等引擎:
- Kylin:MOLAP,预聚合,查询快,但维度多时预计算结果爆炸,灵活性弱。
- Druid:实时数据摄入,高可用、高性能、高并发,但OLAP场景支持有限,JOIN不成熟,无法支持精确去重。
- Impala:MPP系统,内存计算,支持窗口函数、UDF,但依赖Hive,新文件添加需刷新表。
- Presto:跨数据源联邦查询,支持多表JOIN,但大表关联易OOM,并发能力不足。
- ClickHouse:明细动态聚合查询,单机性能彪悍,列存储、向量化引擎,可保留明细数据,但事务支持不完整,分布式表JOIN能力较弱。
- Doris:MPP分布式架构,运维简单,支持事务和幂等性导数,但版本迭代快,大规模ETL易内存不足。
ClickHouse介绍及应用场景
ClickHouse是面向实时OLAP的列式存储开源分析引擎,由Yandex开源,支持完备的DBMS功能、SQL、列式存储、索引、向量化引擎、亚秒级查询、数据复制等。应用场景包括交互式报表、AB TEST、用户画像系统、监控系统。
高斯平台自助分析场景
高斯平台提供埋点数据管理、自助分析、画像标签、AB TEST等功能。系统架构包括数据接入(离线SeaTunnel+调度平台,实时Flink ClickHouseSink)、数据清洗(离线HiveETL,实时Flink+维表关联)、数据服务(统一封装服务,外部调用)。高可用架构由ReplicatedMergeTree表引擎管理数据副本,依赖Zookeeper,配置复杂,维护成本高。
高斯平台集群现状
- 服务器数量:20
- 副本设置:双副本
- 数据规模:存量数据40T+,日增数据20亿+
- TTL设置:186天
- 平台统计:核心看板500+,日活跃用户200+
- 业务支撑:在线报表查询+数据分析
- 分析能力:报表型查询毫秒级响应;分析型查询大部分秒级响应
业务场景及技术实现
- 行为分析:活动专题各坑位点击效果分析,技术实现MATERIALIZED VIEW(POPULATE)+SummingMergeTree+MergeTree。
- AB TEST分析:实时AB实验指标观察功能或算法上线效果,传统T+1离线指标时效性不足。
- 亿级数据JOIN:用户曝光/点击情况JOIN用户画像表,技术方案为联接字段分桶JOIN,通过本地表或Distributed表写入实现。
高斯平台当前痛点
- 不支持事务性DDL与DML操作,多副本模式元数据管理依赖Zookeeper。
- 部分业务场景高并发查询时,ClickHouse高并发能力弱,性能下降。
- 缺少完整的UPDATE、DELETE操作。
- 集群扩容时缺少自动rebalance机制,运维复杂。
ClickHouse优化实践
- 内存相关问题:配置max_memory_usage限制查询内存使用上限,使用max_bytes_before_external_group_by、max_bytes_before_external_sort进行磁盘group by、order by,使用预估函数优化count distinct。
- Zookeeper相关问题:调整MaxSessionTimeout加大会话超时时间,分离dataLogDir、dataDir目录使用SSD,添加use_minimalistic_part_header_in_zookeeper参数压缩元数据存储。
- 性能调优:
- 基础参数配置:调整max_concurrent_queries、max_memory_usage、max_memory_usage_for_all_queries、max_memory_usage_for_user、max_bytes_before_external_group_by、max_bytes_before_external_sort、background_pool_size等参数。
- 建表/查询规范:使用数值型或日期时间型字段,避免Nullable,进行列裁剪和分区裁剪,使用数据字典和物化视图,使用Global避免查询指数级放大。
ClickHouse未来在转转的规划与展望
- 业务方易用性:多租户隔离、限流熔断、监控报警、业务治理。
- 服务平台化:故障规范化、存算分离、集群横向扩展、数据均衡。
- 服务架构智能化:实时写入一致性保证、分布式事务支持、移除Zookeeper服务依赖。
- ClickHouse内核级优化。