如何利用 StarRocks 加速 Iceberg 数据湖的查询效率

news2024/10/1 13:45:12
数据湖作为一种存储各种类型数据的集中式存储系统,以其灵活性、可扩展性和低成本的优势受到越来越多企业的青睐。然而,数据湖虽然降低了数据存储成本,但在数据分析尤其是实时数据分析场景下,其性能仍存在一定瓶颈。

本文将探讨如何利用开源项目 StarRocks 来提升 Iceberg 的查询效率,为企业提供更快速、更灵活的数据分析能力。 作为 StarRocks 社区的主要贡献者和商业化公司,镜舟科技深度参与 StarRocks 项目开发,也为企业着手构建湖仓架构提供更多参考。


一、Iceberg 数据湖查询所面临的性能挑战

71acf7cb24240cca6a5c943780851e30.jpeg

Iceberg 具备强大的功能和灵活性,不过在实际应用中,工程师在处理 Iceberg 表时经常会遇到查询性能瓶颈,对于持续增长的企业来说,这不仅是生产系统产生延迟的影响,更是对整体的业务交付和决策的影响,一旦出现问题,企业需要付出成倍的成本来解决。

1. 数据读取性能瓶颈

首先,由于 Iceberg 的数据存储在分布式文件系统中,数据读取性能受到文件系统性能的限制。

数据湖中的文件级别详细信息记录虽然强大,但扫描整个表进行数据查询需要较长时间。Iceberg 的清单文件(manifest files)通常被高度压缩以节省存储空间,但对于大型清单文件,解压缩过程需要更多时间。使用 C++ 等语言读取和解析这些大型文件时,即使在最佳情况下,也可能需要较长的解析时间。

2. 多维复杂查询性能不足

其次,Iceberg 在复杂多维查询上表现受限,尤其在处理大数据集时效率不足。其索引和分区策略虽能提升性能,但在特定场景下仍显不足。快照查询虽能及时反映数据最新状态,但在复杂查询场景下,数据扫描量大增,导致查询效率下降。

综上可以看出,Iceberg 提供了强大的功能和灵活性,但同时也要求企业投入相应的技术调优策略来实现最佳的系统管理和性能。因此,对于追求高效处理复杂查询的应用场景,需要考虑更简单高效的解决方案。


二、加速 Iceberg 查询的最佳方案——StarRocks

04a4501047edc2e8df65af14b2f1fdd0.jpeg

除了分析本地存储的数据,用户也可以通过 StarRocks 提供的 External Catalog,直接连接到 Iceberg 数据湖,实现无缝集成,无需进行数据迁移也能高效查询 Iceberg 上的数据。这一特性不仅简化了操作流程,还大大降低了数据访问的延迟。

1. 通过 StarRocks 优化查询执行,显著提升查询性能

StarRocks 采用了多种优化技术,如列式存储、索引加速、并行处理等,可以显著提升查询性能。

针对 Iceberg 元数据获取与解析存在的性能问题,可以利用 StarRocks 的 MPP 架构对元数据文件进行并行读取和过滤,这一特性不仅减少了 Master 节点的压力,还显著提升元数据处理的效率,从而加快查询计划的生成速度。

StarRocks 的 CBO 优化器能够收集外部表(包括 Iceberg 表)的统计信息,并利用这些信息生成高效的执行计划。特别是 3.2 版本开始,StarRocks 能够更精准地评估查询成本,选择最优的执行路径

2. 缓存(Data Cache)与物化视图,提供不输数仓的查询体验

为了进一步提升查询效率,可以在 StarRocks 中部署缓存机制来存储热点数据。当查询请求到达时,如果缓存中有相关数据,则可以直接从缓存中读取数据而无需访问 Iceberg。

此外,在计算逻辑较为复杂、性能以及并发要求更高的场景下,可以利用预计算策略来生成物化视图,将复杂的查询结果预先计算并存储起来,以加快查询响应速度。目前,StarRocks 支持同步、异步、自动物化视图等多种能力。


三、最佳实践:小红书湖仓一体实践,性能提升 6-7 倍

987a8d22497a69aded95ffbebf90f72e.jpeg

在小红书的数据平台架构中,Iceberg 作为数据湖的核心组件,负责存储海量数据。随着业务的发展和数据量的增长,Iceberg 数据湖的查询性能出现瓶颈。

StarRocks 3.0 的湖上分析能力帮助小红书在自助分析场景中,将查询引擎通过灰度迁移机制从 Presto 平滑迁移到 StarRocks,已迁移部分的平均查询性能提升 6-7 倍。同时,通过 StarRocks 自动化的数据同步流程,小红书能够对 Iceberg 数据进行直接分析,并确保 Iceberg 中的数据能够实时或定时同步到 StarRocks 中,来保持数据的一致性。

通过弹性伸缩等优化手段,小红书在保持查询性能的同时简化技术栈架构,降低了 IT 成本。特别是在低峰期通过归还 Spot 实例等方式,实现了成本的进一步节约。

更多与 Iceberg 集成的技术详情与用户实践点击此处了解。

写在最后

镜舟科技作为 StarRocks 的商业化公司,其湖仓分析引擎进一步解决了企业在实际应用中遇到的问题,镜舟湖仓分析引擎在开源产品 StarRocks 的基础上,增加诸多企业级产品特性,如更精细的数据权限控制、更便捷的可视化数据管理工具等,保障数据安全。

同时,镜舟湖仓分析引擎在易用性上提供更多支持,帮助企业轻松对接现有 IT 架构和业务系统,构建更加灵活数据分析平台,进一步提升企业的数据分析能力和用户体验。

4fcf00190a21471530ea5c3d3f08ddd3.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2182452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux shell编程学习笔记84:tee命令——显示保存两不误

0 引言 在前面的学习笔记中,我们经常使用echo命令和输出重定向来生成脚本文件或演示文件,其实Linux提供了一个可以从标准输入读取数据,并输出成文件的命令——tee。 1 tee命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 tee命令 的…

攻防世界---->crazy

做题笔记: 草,不要怀疑自己。 下载 查壳。 64ida打开。 先运行一下程序: 先解决第一个问题 ——是不是输入的长度为32。 tips:这题加载了混淆函数等 ida 反正我跳不过去,pwndbg我用的不是很熟悉。 不过没关系 直接跑…

数据库基础03

文章目录 一、DCL语句1.1 管理用户1.2 权限控制 二、函数2.1 字符串函数2.2 数值函数2.3 日期函数3.4 流程函数 三、约束3.1 概述3.2 约束演示3.3 外键约束3.3.1 外键的基本语法3.3.2 删除/更新行为 一、DCL语句 DCL英文全称是Data Control Language(数据控制语言),…

Wooey:将 Python 脚本转化为 Web 应用的简易解决方案

Wooey 是一个开源的 Python 项目,旨在帮助开发者快速将 Python 脚本转化为用户友好的 Web 应用程序。通过 Wooey,开发者无需编写复杂的前端代码即可轻松为 Python 脚本创建基于网页的图形用户界面(GUI)。这使得 Wooey 成为处理数据…

小阿轩yx-案例:项目发布基础

小阿轩yx-案例:项目发布基础 前言 随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集…

【Python报错已解决】 Running setup.py install for wxPython did not run successfully.

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Linux防火墙配置绿色端口,解决无法访问java服务的问题

配置防火墙,添加或删除端口,需要有root权限。 防火墙常用命令如下: 1.查看防火墙状态: systemctl status firewalldactive(running):开启状态,正在运行中 inactive(dead):关闭状态&#xff0…

js事件循环机制(event loop) 同步任务 异步任务 宏任务 微任务 任务队列与调用栈

1 js事件循环机制简单介绍 JavaScript 是单线程的,处理耗时任务时会阻塞程序执行。为解决这一问题,引入了异步任务机制。同步任务由 JavaScript 引擎直接处理,而异步任务则由宿主环境(如 Node.js、浏览器等多线程环境)…

Leetcode 每日一题:Crack The Safe

写在前面: 学期真的忙起来了,我的两个社团也在上一周终于完成了大部分招新活动。虽然后面有即将到来的期中考试和求职,但希望能有时间将帖子的频率提上去吧(真的尽量因为从做题思考到写博客讲解思路需要大量的时间,在…

矩阵系统源码搭建的具体步骤,支持oem,源码搭建

一、前期准备 明确需求 确定矩阵系统的具体用途,例如是用于社交媒体管理、电商营销还是其他领域。梳理所需的功能模块,如多账号管理、内容发布、数据分析等。 技术选型 选择适合的编程语言,如 Python、Java、Node.js 等。确定数据库类型&…

盘点2024年远程控制黑科技,4款好用到飞起,你get了吗?

随着数字化的浪潮,远程办公变得越来越流行。虽然有些人担心不在办公室工作,效率会降低,但实际上并不是这样。技术一直在进步,现在有很多好用的远程控制软件,它们不仅打破了地点的限制,还让在家工作也能井井…

Spring Boot实现足球青训俱乐部管理自动化

4 系统设计 4.1 系统架构设计 B/S系统架构是本系统开发采用的结构模式,使用B/S模式开发程序以及程序后期维护层面需要的经济成本是很低的,用户能够承担得起。使用这样的模式开发,用户使用起来舒心愉悦,不会觉得别扭,操…

Spring Boot技术在足球青训管理中的创新应用

3 系统分析 3.1 可行性分析 可行性分析是该平台系统进行投入开发的基础第一步,必须对其进行可行性分析才能够降低不必要的需要从而使资源合理利用,更具有性价比和降低成本,同时也是系统平台的成功的未雨绸缪的一步。 3.1.1 技术可行性 技术可…

Redis篇(缓存机制 - 多级缓存)(持续更新迭代)

目录 一、传统缓存的问题 二、JVM进程缓存 1. 导入案例 2. 初识Caffeine 3. 实现JVM进程缓存 3.1. 需求 3.2. 实现 三、Lua语法入门 1. 初识Lua 2. HelloWorld 3. 变量和循环 3.1. Lua的数据类型 3.2. 声明变量 3.3. 循环 4. 条件控制、函数 4.1. 函数 4.2. 条…

足球青训后台管理系统:Spring Boot实现指南

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时,它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译,任何地方执行的优点,使得盛行的web应用程序有大量的Java编译,很好地支…

生信初学者教程(十九):免疫浸润细胞

文章目录 介绍加载R包导入数据所需函数运行ImmuCellAI其他免疫浸润方法输出结果总结介绍 免疫浸润分析在癌症研究中扮演着至关重要的角色,它有助于理解癌症微环境中免疫细胞的组成及其作用。bulk转录组基因表达数据的反卷积技术,如CIBERSORT算法,是实现这一分析的重要工具。…

云原生数据库 PolarDB

简介:云原生数据库 PolarDB 是阿里云自研产品,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态,支持分布式扩展&#xff0…

Spring整合Mybatis Plus

Mybatis Plus是原始Mybatis的增强,框架内部自动实现了Mapper的CRUD操作,极大的提高了编程效率。对单表操作基本无需编写Mapper.xml文件内容,对复杂的多表关联查询时,需要额外在Mapper.xml编写对应的sql语句。 Spring整合Mybatis P…

《如何高效学习》

有道云笔记 第一部分 整体性学习策略 结构 结构就像思想中的一座城市,有很多建筑物,建筑物之间有道路相连,有高大而重要的与其他建筑有上百条路相连,无关紧要的建筑只有少数泥泞的小道与外界相通。 建立良好的知识结构就是绘制…

仿真设计|基于51单片机的土壤温湿度监测及自动浇花系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)DS18B20实时检测环境温度,LCD1602实时显示土壤温湿度&…