⼩红书云原⽣实时数仓的建设与实践 OLAP研发专家/王成 王成 •2020年12⽉加⼊⼩红书⼤数据技术部 •从0到1主导/负责⼩红书云原⽣实时数仓架构、落地与迭代⼯作 CONTENT •背景:云原⽣落地前,使⽤ClickHouse遇到的问题和挑战 •云原⽣OLAPV1.0建设之路 •V-next湖仓⼀体建设规划 分析型数据库(OLAP) 开源项⽬:商业项⽬: ClickHouse Hologres ………… 云原⽣⼤数据架构 应⽤层 DorRugalWaypointVela 数据⽣产⼯具 Gravity Guanyuan 分析⼯具 计算引擎层 Flink RedSpark Tez 实时/离线引擎 Presto Hive 数据分析 -云上的原住⺠ 计算资源层 K8sYarnPavo 数据层 ParquetORCAvro… 存储层 S3OSSCOSAlluxio OLAP的引⼊ 应⽤层 DorRugalWaypointVela 数据⽣产⼯具 GuanyuanGravity UBA实验平台 分析⼯具 Norma 鹰眼 蒲公英 灵犀 内容产品⼯具 计算引擎层 Flink RedSpark Tez 实时/离线引擎 StartRocks ClickHouse Presto 即席分析 计算资源层 K8sYarnPavo 独⽴的机器资源 数据层 ParquetORCAvro… ⾃有数据格式 存储层 S3OSSCOSAlluxio SSD,HDD,云盘 05⽉ 试⽔应⽤ClickHouse 2019 01⽉ ⾃研云原⽣数仓⽴项 2021 10⽉ V1.0全⾯落地 主要业务线 2022 实时数仓发展历程 2020 11⽉ 业务拓展 40+集群10+业务线 2021 07⽉ ⾃研云原⽣数仓V1.0 正式落地 2022+ 11⽉ 湖仓⼀体 云原⽣数仓V-next 背景: 云原⽣落地前ClickHouse遇到的问题和挑战 痛点: 痛点: •扩容周期⻓ •需要额外的数据搬迁或重写 •多副本机制引⼊的中⼼瓶颈 扩容难 -扩容周期⻓ -⼿动的数据搬迁或重写 ClickHousesharenothing(⽆共享)架构 新增节点 扩容难 -多副本机制中⼼瓶颈 • ZK引⼊同步瓶颈,制约集群扩展 • 多副本->成倍的成本 • 查询的⼀致性问题 痛点: •⼀致性问题 •数据同步链路复杂 • 同步链路复杂 • 数据写⼊影响⽤户查询体验 数据同步难 -数据同步链路复杂 痛点: •资源利⽤率低 •⽤户查询体验不稳定 • 存储计算⽐例失调 • 业务需求呈现规律性的波峰⾕振荡 运维难 平均CPU使⽤率 低 • 集群容量预估困难 -资源利⽤率低 • ⾼峰查询期间失败率⾼ • 多⽤户/业务线互相⼲扰,⽆优先级管理 运维难 ⽤户查询体验 不稳定 -⽤户查询体验不稳定 解决⽅案:云原⽣ 问题:⽬标: •存算耦合 •资源隔离能⼒弱 •数据同步成本⾼、⼀致性差 •存算分离、弹性扩展 •提供更强的计算资源隔离能⼒ •打破数据壁垒 •⽀持事务和原⼦性 ⾃研云原⽣实时数仓的价值 -灵活性:快速响应业务 -⾃主可控:保障性能、稳定性、安全性 -符合⼩红书多云战略 云原⽣OLAPV1.0 建设之路 云原⽣OLAPV1.0 数据源 数据集成 REDClickHouse 数据应⽤ aws/cos/oss ⽇志数据对象OLTP 数据流 离线 实时 元信息中⼼ 多⽤户管理 查询调度 计算隔离弹性扩展 故障恢复 容器化 事务 分桶 冷热分层 数据加速 存储 计算 服务 实时报表 ⽤户⾏为分析 A/B测试 ⼴告业务 云原⽣存算分离架构 元信息中⼼ 元信息层 计算层 架构特性: • 共享元信息中⼼,共享存储 • 基于云存储,按需使⽤,⽆限扩展 • 计算资源池化,以计算组为单位,弹性扩展 查询路由器 计算组-1 MasterServerWorker 计算组N 分布式⽂件系统 CFS/JuiceFS 缓存 对象存储 COS/S3/OSS 存储层 分布式执⾏框架 -分布式写⼊事务 分布式执⾏框架 -分布式写⼊事务 弹性扩容和故障容错 分布式存储选型 对象存储—— 优点 •价格低 •⽆限扩容 •⾼并发 缺点 •延迟⾼ •单点性能低 •不稳定 挑战—— 查询分析 •查询性能慢 •查询受⽹络影响,成功率不稳定 数据摄⼊ •亿级QPS数据⽆法实时写⼊ •写⼊不稳定,影响数据⼀致性 •并⾏读取 •断点续传 多级智能缓存 READ READ WORKER WORKER 内存缓存 ... 内存缓存 SSD SSD HDD HDD 对象存储 分布式缓存 –加速数据查询 •被动缓存 •主动缓存 •元信息缓存 •表级别⾃定义缓存策略 •基于查询历史智能缓存策略 海量数据实时分析-分层存储 云盘 对象存储 内存 云盘 对象存储 延迟 *** ** * IOPS *** ** * 可靠性 * *** *** 扩展性 * ** *** 成本 * ** *** 写⼊ 离线数据同步链路优化-优化前 ODS/DW Flink BI ClickHouse Parquet MergeTree 对象存储本地存储 离线数据同步链路优化-优化后 ODS/DW BI RedCK SparkWriter Attach 对象存储 MergeTree 总结 •存算分离 •计算资源弹性伸缩 •存储资源按需申请 数据摄⼊ •千万级实时数据集成=>分层存储 •写⼊不稳定=>Exactly-once语义 •数据同步链路⻓=>SparkMergeTreeWriter 查询分析 •查询性能慢=>多级智能缓存 •关联分析瓶颈=>Bucket模型、数据本地化 集群可⽤性 •快速的故障⾃动恢复机制 •分布式缓存,加速预热 业务落地实践 降本提效 A/BTEST PB+(年) ⼏⼗TB(⽉) RedCK ClickHouse ⽤户⾏为分析 ⼏⼗ PB 年 100+ 99.9% 数据量 存储时间 节点数量 查询可⽤性 资源成本 磁盘 RedCK相⽐开源Clickhouse,存储成本明显降低 -CPU RedCK通过弹性伸缩、集群整合,提升⼯作时效率 RedCK通过容器化混合部署,提升夜间使⽤率 - 运维成本 -集群扩容 RedCK 开源ClickHouse -集群故障: ⼩于30min 以周/⽉为单位分钟级⾃动恢复 实验平台 -多租户管理 路由规则 •业务需求 •查询类型 •在线查询 •重查询 •冷查询 •弹性扩容队列 ⽤户⾏为分析 –海量数据实时接⼊ V-next:湖仓⼀体建设 为什么要湖仓⼀体化? -数据湖和实时数仓的数据是割裂的,造成了⼤量的存储和计算冗余 -⽬前的实时数仓⽆法应对复杂ETL加⼯的场景 -查询⽅式不同引⼊额外的使⽤成本 湖仓⼀体 SparkWriter 开放的MergeTree格式 ODS DW BI ETL RedCK Storage Parquet MergeTree Spark Presto Flink 融合分析 湖仓⼀体 未来规划 •持续推进湖仓统⼀建设 •更丰富的引擎功能 •⾃动敏捷的弹性伸缩机制 欢迎关注微信公众号: Q&A ⼩红书技术REDtech ⼩红书招聘