建设手机银行网站,青岛北方现货交易平台,大网站都开放自己的cms系统,佛山制作网站公司哪家好本文整理自阿里云高级开发工程师曾庆栋#xff08;曦乐#xff09;在 Streaming Lakehouse Meetup 分享的内容#xff0c;深入探讨了传统数据仓库分析、PaimonStarRocks湖仓一体数据分析、StarRocks 与 Paimon 的协同使用方法与实现原理#xff0c;以及StarRocks 社区湖仓分…本文整理自阿里云高级开发工程师曾庆栋曦乐在 Streaming Lakehouse Meetup 分享的内容深入探讨了传统数据仓库分析、PaimonStarRocks湖仓一体数据分析、StarRocks 与 Paimon 的协同使用方法与实现原理以及StarRocks 社区湖仓分析的未来规划。
01 传统数据仓库分析实现方案简介
传统数据仓库分析的实现是一个典型 Lambda 架构通过下图我们可以看出传统架构主要分为两层上层是实时链路层下层是离线链路层。它们的数据通过左侧的数据摄入层通过不同路径将数据统一整合到像 Kafka 这样的消息队列中间件中然后将数据分为两份相同的数据分别由实时链路和批量链路进行处理最终汇总到数据服务层实现对用户提供数据分析服务的能力。
Lambda 架构的出现主要是因为用户对于实时分析需求的出现以及流处理技术的逐渐成熟。但是它也有一些明显的弊端如上图所示它需要维护两套系统这就会导致部署成本和人力成本都会增加。当业务变更的时候也需要修改两套系统来适应业务的变化。 随着流处理技术的逐渐成熟Lambda 架构之后又推出了 Kappa 架构如下图所示。
Kappa 架构是使用流处理链路来代替原来的 Lambda 架构因为流处理的成熟所以通过一套系统去完成实时和离线的计算成为可能。 Kappa 架构有一个前提它认为对于历史数据的重复计算在非必要的情况下是不用进行的。这就使得当用户需要重新计算历史数据或是出现新业务变动的时候往往需要将整个数据摄入阶段的过程重放一次。在大量消费历史数据的情况下必然造成资源浪费并遇到一些瓶颈。
02 PaimonStarRocks 构建湖仓一体数据分析实现方案
2.1 数据湖中心
第一个方案是 Paimon 和 StarRocks 构建湖仓一体数据分析的数据湖中心方案。
StarRocks 本身是一个 MPP 的数据库同时可以外接多种格式的数据湖组件可以以单纯作为查询引擎去外接数据湖组件实现查询功能。如上图通过 StarRocks 或 Spark 都可以对 ODS 等数据层的 Paimon 组件进行查询。 在这个架构里Paimon 通过对数据的落盘和索引弥补了上文介绍的 Kappa 架构中消息队列中间件在数据的修改、回溯、查询等方面的不足从而使得这个架构的容错率更高支持的能力也更广泛。同时在批处理方面Paimon 也可以完全兼容 HIVE 的能力。
2.2 加速查询
第二个方案是 Paimon 和 StarRocks 构建湖仓一体数据分析的加速查询方案。
它与第一个方案的区别是几乎整个系统都由 StarRocks 单独完成。当数据接入 Paimon使它作为 ODS 层之后通过 StarRocks 的外表特性来读取 Paimon 上的数据建立一层物化视图来作为 DWD 层。 StarRocks 的物化视图具有一定的 ETL 的能力当它作为 DWD 层之后又通过第二层嵌套物化视图来作为 DWS 层最终提供给数据服务层进行数据分析。 通过 StarRocks 的这套系统配合 Paimon 这个架构的两个优点是
简化了运维因为它不用再去维护各种组件只需要 StarRocks 和 Paimon 就可以完成数据分析方案的构建查询速度快因为 StarRocks 是一套从构建索引、数据存储、查询优化都自成体系的一个数据湖引擎所以它相比上文介绍的其他各种查询引擎速度更快。
2.3 物化视图 上图右侧 SQL 是描述如何建立一个 StarRocks 异步物化视图。它主要有以下几个特点
通过 SQL 定义上手简单方便维护预计算降低查询延时减少重复计算开销自动查询路由无需改写 SQL透明加速支持异步自动刷新数据定时刷新智能按分区刷新支持多表构建基表可来自内表、外表和已有的物化视图。
2.4 冷热分离
这是通过 Paimon StarRocks 实现冷热分离的特性。
冷热分离的概念是希望可以将经常查询的热数据存储到查询快的像 StarRocks 这种 OLAP 引擎上不经常查询的冷数据存储到比较廉价的远程文件存储组件比如 OSS 和 HDFS。 如上图 Paimon StarRocks 冷热分离的例子如果构建了这样一个冷热分离的 MV 表当查询到这张表的时候会自动选择在 StarRocks 上分布的这个热数据和在 Paimon 分布的冷数据。然后对查询结果合并并返回给用户。
03 StarRocks 与 Paimon结合的使用方式与实现原理
3.1 Paimon 外表使用
得益于 StarRocks 对外表 Catalog 的抽象在 Paimon 推出不久StarRocks 就以实现相应接口的方式实现了对于 Paimon 外表的支持。在对接 Paimon 外表时只需要在 StarRocks 上执行下面这条 Create External Catalog 语句对 Type 指定为 Paimon填写上对应的路径之后就可以直接查询 Paimon 中的数据了。
3.2 JNI Connector
JNI Connector 是使得 StarRocks 和 Paimon 结合的一个比较重要的特性。
JNI Connector 的背景是 StarRocks 对于数据处理的组件是 C 程序编写的但是数据湖组件提供的 SDK 大多数是 Java 的没有 C 的 SDK如果 StarRocks 想要通过 BE 访问数据湖组件底层数据的话只能访问它原生的 ORC/Parquet 等格式无法应用这些组件所提供的高级功能。
JNI Connector 是一个抽象的针对所有外表 Java SDK 都可以适用的 Connector。它用于 StarRocks 的 BE 组件上是处于 BE 和数据湖组件 Java SDK 之间的中间层。
JNI Connector 的主要功能是调用数据湖组件的 Java SDK 去读取数据湖的数据然后将读取到的数据以 StarRocks 的 BE 可识别的内存排列方式写入到一块堆外内存上然后将这个内存交接给 BE C程序去运行这样就使得它可以将 BE 和 Java SDK 进行衔接。
JNI Connector 有以下几个特点
快速接入各类 Java 数据源无需考虑数据转换提供简单易用的 Java 接口已支持 Hudi MOR TablePaimon Table支持 Struct, Map, Array 复杂类型BE 代码零侵入不需要考虑 C具体实现。
下图是 JNI Connector 当中一些细节的介绍。
上面是定长字段存储格式下面是变长字段的存储格式。
定长字段存储格式 第一部分是对于这一列中每一行数据是否为 Null 的定义。第二部分是数据部分这里存储定长的具体的数据。 变长字段存储格式 第一部分是对于这一列中每一行是否 Null 的数组第二部分是描述第三部分具体数据中每一行数据开始读取的起始地址第三部分是具体数据。
04 StarRocks 社区湖仓分析未来规划
当前 StarRocks 已经支持了 Paimon 的一部分特性还有一些暂未实现。那么未来计划完善 Paimon 表分析的特性如下
支持分析复杂类型支持列统计信息支持元数据缓存支持 time travel支持基于 Paimon 外表的流式物化视图
QA
Q请问物化视图如何做到有效管理 A物化视图在建立之后是可以自动刷新和调度的不需要依赖外部组件去触发刷新。查询改写能力使得用户可以只查 base 表不需要去指定查某个物化视图。这两个特性减少了不少管理方面的问题。而对于物化视图与 base 表之间、以及嵌套物化视图之间的依赖关系EMR-Serverless-StarRocks 后续会推出一个任务调度与表依赖关系的 web 展示功能。
QPaimonStarRocks 湖仓一体数据分析方案在数据安全比如访问控制、数据审计等是否有具体的规划 A目前我了解到的 StarRocks 关于数据管理权限是基于角色分配的查看、修改等权限对于不同角色赋予不同权限。另外对于 OSS 或 HDFS 上的数据会有对应的组件认证功能。
Q请问以 StarRocks 为主体的湖仓一体架构中在从 Paimon 读取数据之后会写回到 Paimon 吗 A在从 Paimon 读取完 ODS 层的数据后会流入 StarRocks 的物化视图之后是一层嵌套的 StarRocks 物化视图并不会写回到 Paimon。
活动视频回顾 PPT 获取
视频回放https://www.bilibili.com/video/BV1WN411h7X1/ PPT 下载https://forum.mirrorship.cn/t/topic/8711
对 StarRocks 感兴趣的小伙伴们欢迎加入StarRocks 社区群。在这里你可以和同样对StarRocks 感兴趣的用户们和核心开发者们沟通无阻 下方扫码添加小助手回复关键字“入群”即可加入 https://wx.focussend.com/weComLink/mobileQrCodeLink/33412/8da64