EMR StarRocks 极速数据湖分析原理解析

作者

阿里云 EMR 开源大数据 OLAP 团队

StarRocks 社区数据湖分析团队

StarRocks 是一个强大的数据分析系统,主要宗旨是为用户提供极速、统一并且易用的数据分析能力,以帮助用户通过更小的使用成本来更快的洞察数据的价值。通过精简的架构、高效的向量化引擎以及全新设计的基于成本的优化器(CBO),StarRocks 的分析性能(尤其是多表 JOIN 查询)得以远超同类产品。

为了能够满足更多用户对于极速分析数据的需求,同时让 StarRocks 强大的分析能力应用在更加广泛的数据集上,阿里云开源大数据 OLAP 团队联合社区一起增强 StarRocks的数据湖分析能力。使其不仅能够分析存储在 StarRocks 本地的数据,还能够以同样出色的表现分析存储在 Apache Hive、Apache Iceberg 和 Apache Hudi 等开源数据湖或数据仓库的数据。

本文将重点介绍 StarRocks 极速数据湖分析能力背后的技术内幕,性能表现以及未来的规划。

01

整体构架

7bf218507bb9b1e355ad951acdb5be2b.png

在数据湖分析的场景中,StarRocks 主要负责数据的计算分析,而数据湖则主要负责数据的存储、组织和维护。上图描绘了由 StarRocks 和数据湖所构成的完成的技术栈。 

StarRocks 的架构非常简洁,整个系统的核心只有 FE(Frontend)、BE(Backend)两类进程,不依赖任何外部组件,方便部署与维护。其中 FE 主要负责解析查询语句(SQL),优化查询以及查询的调度,而 BE 则主要负责从数据湖中读取数据,并完成一系列的 Filter 和 Aggregate 等操作。

数据湖本身是一类技术概念的集合,常见的数据湖通常包含 Table Format、File Format 和 Storage 三大模块。其中 Table Format 是数据湖的“UI”,其主要作用是组织结构化、半结构化,甚至是非结构化的数据,使其得以存储在像 HDFS 这样的分布式文件系统或者像 OSS 和 S3 这样的对象存储中,并且对外暴露表结构的相关语义。Table Format 包含两大流派,一种是将元数据组织成一系列文件,并同实际数据一同存储在分布式文件系统或对象存储中,例如 Apache Iceberg、Apache Hudi 和 Delta Lake 都属于这种方式;还有一种是使用定制的 metadata service 来单独存放元数据,例如 StarRocks 本地表,Snowflake 和 Apache Hive 都是这种方式。

File Format 的主要作用是给数据单元提供一种便于高效检索和高效压缩的表达方式,目前常见的开源文件格式有列式的 Apache Parquet 和 Apache ORC,行式的 Apache Avro 等。

Storage 是数据湖存储数据的模块,目前数据湖最常使用的 Storage 主要是分布式文件系统 HDFS,对象存储 OSS 和 S3 等。

FE

534620726d6a7d14a92fa86e2ee8e8f3.png

FE 的主要作用将 SQL 语句转换成 BE 能够认识的 Fragment,如果把 BE 集群当成一个分布式的线程池的话,那么 Fragment 就是线程池中的 Task。从 SQL 文本到分布式物理执行计划,FE 的主要工作需要经过以下几个步骤:

  • SQL Parse:将 SQL 文本转换成一个 AST(抽象语法树)

  • SQL Analyze:基于 AST 进行语法和语义分析

  • SQL Logical Plan:将 AST 转换成逻辑计划

  • SQL Optimize:基于关系代数,统计信息,Cost 模型对 逻辑计划进行重写,转换,选择出 Cost “最低” 的物理执行计划

  • 生成 Plan Fragment:将 Optimizer 选择的物理执行计划转换为 BE 可以直接执行的 Plan Fragment。

  • 执行计划的调度

BE

6bc8b1b6c2dd11f3de947c3e132ab990.png

Backend 是 StarRocks 的后端节点,负责数据存储以及 SQL 计算执行等工作。

StarRocks 的 BE 节点都是完全对等的,FE 按照一定策略将数据分配到对应的 BE 节点。在数据导入时,数据会直接写入到 BE 节点,不会通过FE中转,BE 负责将导入数据写成对应的格式以及生成相关索引。在执行 SQL 计算时,一条 SQL 语句首先会按照具体的语义规划成逻辑执行单元,然后再按照数据的分布情况拆分成具体的物理执行单元。物理执行单元会在数据存储的节点上进行执行,这样可以避免数据的传输与拷贝,从而能够得到极致的查询性能。

02

技术细节

StarRocks 为什么这么快?

CBO 优化器


187a7c040fb3fad87b53491fd36b6bce.png

一般 SQL 越复杂,Join 的表越多,数据量越大,查询优化器的意义就越大,因为不同执行方式的性能差别可能有成百上千倍。StarRocks 优化器主要基于 Cascades 和 ORCA 论文实现,并结合 StarRocks 执行器和调度器进行了深度定制,优化和创新。完整支持了 TPC-DS 99 条 SQL,实现了公共表达式复用,相关子查询重写,Lateral Join, CTE  复用,Join Rorder,Join 分布式执行策略选择,Runtime Filter 下推,低基数字典优化 等重要功能和优化。

CBO 优化器好坏的关键之一是 Cost 估计是否准确,而 Cost 估计是否准确的关键点之一是统计信息是否收集及时,准确。StarRocks 目前支持表级别和列级别的统计信息,支持自动收集和手动收集两种方式,无论自动还是手动,都支持全量和抽样收集两种方式。

MPP 执行

MPP (massively parallel processing) 是大规模并行计算的简称,核心做法是将查询 Plan 拆分成很多可以在单个节点上执行的计算实例,然后多个节点并行执行。每个节点不共享 CPU,内存, 磁盘资源。MPP 数据库的查询性能可以随着集群的水平扩展而不断提升。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据湖的技术栈可以有多种选择,不同的厂商和解决方案提供了不同的技术组合。引用\[3\]中提到了谷歌和腾讯的数据湖解决方案,它们推荐的落地方案是"oss+hadoopEMR)"。这意味着使用对象存储服务(如阿里云的OSS)和分布式计算框架(如Apache Hadoop和Amazon EMR)来构建数据湖。这种方案相对简单,但仅仅是一些概念上的阐述。 然而,数据湖的实现方式并不仅限于特定的技术平台。一个成熟的数据湖解决方案应该提供全面的数据管理能力,包括元数据管理、数据资产目录、数据源管理、数据处理任务、数据生命周期管理、数据治理和权限管理等。此外,它还应该具备与外部生态系统的对接能力。 因此,对于数据湖的技术栈选择,需要根据具体的需求和场景来进行评估和选择。不同的组织和项目可能会选择不同的技术组合,以满足其特定的数据湖需求。 #### 引用[.reference_title] - *1* *2* [关于数据仓库与数据湖,4万字总结](https://blog.csdn.net/weixin_45727359/article/details/129483726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [4万字总结,关于数据仓库与数据湖](https://blog.csdn.net/WindyQCF/article/details/129357345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值