BlankLin

lazy and boring

0%

starrocks在滴滴的落地

背景介绍

ClickHouse介绍

ClickHouse是由俄罗斯的第一大搜索引擎Yandex公司开源的列存数据库。令人惊喜的是,ClickHouse相较于很多商业MPP数据库,比如VerticaInfiniDB有着极大的性能提升。除了Yandex以外,越来越多的公司开始尝试使用ClickHouse等列存数据库。对于一般的分析业务,结构性较强且数据变更不频繁,可以考虑将需要进行关联的表打平成宽表,放入ClickHouse中。

  • 配置丰富,只依赖与Zookeeper
  • 线性可扩展性,可以通过添加服务器扩展集群
  • 容错性高,不同分片间采用异步多主复制
  • 单表性能极佳,采用向量计算,支持采样和近似计算等优化手段
  • 功能强大支持多种表引擎

StarRocks介绍

StarRocks是一款极速全场景MPP企业级数据库产品,具备水平在线扩缩容,金融级高可用,兼容MySQL协议和MySQL生态,提供全面向量化引擎与多种数据源联邦查询等重要特性。StarRocks致力于在全场景OLAP业务上为用户提供统一的解决方案,适用于对性能,实时性,并发能力和灵活性有较高要求的各类应用场景。

  • 不依赖于大数据生态,同时外表的联邦查询可以兼容大数据生态
  • 提供多种不同的模型,支持不同维度的数据建模
  • 支持在线弹性扩缩容,可以自动负载均衡
  • 支持高并发分析查询
  • 实时性好,支持数据秒级写入
  • 兼容MySQL 5.7协议和MySQL生态

二者的对比

相似之处

  • 都可以提供极致的性能
  • 都不依赖于Hadoop生态
  • 底层存储分片都提供了主主的复制高可用机制。
  • 都是MPP架构
  • 都是列式存储
  • 都支持表述SQL语法
  • 都提供了MOLAP库的预聚合能力

差异性

  • ClickHouse在更适用于大宽表的场景,TP的数据通过CDC工具的,可以考虑在Flink中将需要关联的表打平,以大宽表的形式写入ClickHouse
  • StarRocks对于join的能力更强,ClickHouse虽然提供了join的语义,但使用上对大表关联的能力支撑较弱,复杂的关联查询经常会引起OOM
  • ClickHouse对高并发的业务并不友好,即使一个查询,也会用服务器一半的CPU去查询
  • StarRocks可以支撑数千用户同时进行分析查询,在部分场景下,高并发能力能够达到万级。StarRocks在数据存储层,采用先分区再分桶的策略,增加了数据的指向性,利用前缀索引可以快读对数据进行过滤和查找,减少磁盘的I/O操作,提升查询性能
  • 对于用户的原有的查询基表的 SQL 语句保持不变,StarRocks 会自动选择一个最优的物化视图,从物化视图中读取数据并计算。用户可以通过 EXPLAIN 命令来检查当前查询是否使用了物化视图。而ClickHouse则需要用户自行指定SQL中所需要使用的物化视图。

为什么推荐StarRocks

  1. 滴滴大数据OLAP团队目前在维护的引擎有StarRocksClickHouseDruid,3个引擎各有各的特点,现有的OLAP引擎(Kylin、Druid、ClickHouse)多表Join时的性能都比较差,甚至不支持多表Join,现有的引擎Druid虽然有lookup表的能力,但经过实际测试后性能不佳。Apache Kylin实际上也不支持Join,多表的Join需要通过在cube构建的时候底层打成宽表来实现。ClickHouse只支持本地Hash join的模式,不支持分布式Shuffle join,多数情况下灵活性受限,性能表现不佳。
  2. OLAP引擎需要同时具备明细数据查询和数据聚合的能力。由于Apache KylinDruid不能较好支持明细数据查询,我们引入了ClickHouse,通过在明细表基础上创建相应聚合物化视图来处理,但是不够灵活,对于上层应用来说,查明细和查聚合需要切到不同的表去处理。
  3. 目前我们团队在有限人员情况下需要维护这3个引擎的稳定性,导致我们对每一个引擎的理解深度都不够,特别像ClickHouse,运维成本非常高,ClickHouse集群的分片、副本信息,都是通过静态的配置文件的方式进行配置。当整个集群需要扩缩容的时候,就必须通过修改配置文件的方式进行刷新,数据的均衡都需要运维人员介入。此外ClickHouse通过zookeeper来做副本管理,当集群规模变大时,副本数过多会导致zookeeper的压力变大,集群的稳定性也就会相应变差。
    为解决以上问题,滴滴大数据OLAP团队在2022年初开始调研StarRocks,在全面测试过从上面对StarRocksClickHouse的对比,我们也可以明显感受到StarRocks在多数场景下都是优于ClickHouse的,我们希望通过StarRocks来实现OLAP平台的多业务场景的查询引擎统一化。
    1
    注:这是我们针对DruidClickHouseStarRocks进行的测试对比,链接

StarRocks特性

StarRocks的架构设计融合了MPP数据库,以及分布式系统的设计思想,其特性如下所示。

架构精简

  • StarRocks内部通过MPP计算框架完成SQL的具体执行工作。MPP框架能够充分的利用多节点的计算能力,整个查询可以并行执行,从而实现良好的交互式分析体验。
  • StarRocks集群不需要依赖任何其他组件,易部署、易维护和极简的架构设计,降低了StarRocks系统的复杂度和维护成本,同时也提升了系统的可靠性和扩展性。管理员只需要专注于StarRocks系统,无需学习和管理任何其他外部系统。

全面向量化引擎

StarRocks的计算层全面采用了向量化技术,将所有算子、函数、扫描过滤和导入导出模块进行了系统性优化。通过列式的内存布局、适配CPUSIMD指令集等手段,充分发挥了现代CPU的并行计算能力,从而实现亚秒级别的多维分析能力。

智能查询优化

StarRocks通过CBO优化器 (Cost Based Optimizer) 可以对复杂查询自动优化。无需人工干预,就可以通过统计信息合理估算执行成本,生成更优的执行计划,大大提高了AdHocETL场景的数据分析效率。

联邦查询

StarRocks支持使用外表的方式进行联邦查询,当前可以支持HiveMySQLElasticsearchIcebergHudi类型的外表,您无需通过数据导入,可以直接进行数据查询加速。

高效更新

StarRocks支持明细模型(DUPLICATE KEY)、聚合模型(AGGREGATE KEY)、主键模型(PRIMARY KEY)和更新模型(UNIQUE KEY),其中主键模型可以按照主键进行UpsertDelete操作,通过存储和索引的优化可以在并发更新的同时实现高效的查询优化,更好的服务实时数仓的场景。

智能物化视图

  • StarRocks支持智能的物化视图。您可以通过创建物化视图,预先计算生成预聚合表用于加速聚合类查询请求。
  • StarRocks的物化视图能够在数据导入时自动完成汇聚,与原始表数据保持一致。
  • 查询的时候,您无需指定物化视图,StarRocks能够自动选择最优的物化视图来满足查询请求。

标准SQL

  • StarRocks支持标准的SQL语法,包括聚合、JOIN、排序、窗口函数和自定义函数等功能。
  • StarRocks可以完整支持TPC-H的22个SQLTPC-DS的99个SQL
  • StarRocks兼容MySQL协议语法,可以使用现有的各种客户端工具、BI软件访问StarRocks,对StarRocks中的数据进行拖拽式分析。

流批一体

  • StarRocks支持实时和批量两种数据导入方式。
  • StarRocks支持的数据源有KafkaHDFS和本地文件。
  • StarRocks支持的数据格式有ORCParquetCSV等。
  • StarRocks可以实时消费Kafka数据来完成数据导入,保证数据不丢不重 (exactly once)
  • StarRocks也可以从本地或者远程(HDFS)批量导入数据。

高可用易扩展

  • StarRocks的元数据和数据都是多副本存储,并且集群中服务有热备,多实例部署,避免了单点故障。
  • 集群具有自愈能力,可弹性恢复,节点的宕机、下线和异常都不会影响StarRocks集群服务的整体稳定性。
  • StarRocks采用分布式架构,存储容量和计算能力可近乎线性水平扩展。StarRocks单集群的节点规模可扩展到数百节点,数据规模可达到10 PB级别。
  • 扩缩容期间无需停服,可以正常提供查询服务。
  • StarRocks中表模式热变更,可通过一条简单SQL命令动态地修改表的定义,例如增加列、减少列和新建物化视图等。同时,处于模式变更中的表也可以正常导入和查询数据。

StarRocks应用场景

StarRocks可以满足企业级用户的多种分析需求,具体的业务场景如下所示:

OLAP多维分析

  • 用户行为分析
  • 用户画像、标签分析、圈人
  • 高维业务指标报表
  • 自助式报表平台
  • 业务问题探查分析
  • 跨主题业务分析
  • 财务报表
  • 系统监控分析

实时数仓

  • 电商大促数据分析
  • 教育行业的直播质量分析
  • 物流行业的运单分析
  • 金融行业绩效分析、指标计算
  • 广告投放分析
  • 管理驾驶舱
  • 探针分析APM(Application Performance Management)

高并发查询

  • 广告主报表分析
  • 零售行业渠道人员分析
  • saas行业面向用户分析报表
  • dashboard多页面分析

统一分析

通过使用一套系统解决多维分析、高并发查询、实时分析和Ad-Hoc查询等场景,降低系统复杂度和多技术栈开发与维护成本。

如何使用StarRocks

我们olap团队已经将StarRocks接入到滴滴各个平台,下面会介绍如何使用滴滴内部的平台和工具方便快捷的使用StarRocks引擎。
1