Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部发布

湖仓才是数据智能的未来?那你必须了解下国产唯一开源湖仓了

国产唯一的开源数据湖存储框架 LakeSoul 近期发布了 2.0 升级版本,让数据智能触手可及。

湖仓一体作为新一代大数据技术架构,将逐渐取代单一数据湖和数仓架构,成为大数据架构的演进方向。当前已有 DeltaLake、Iceberg、Hudi 等国外开源的数据湖存储框架。LakeSoul 是数元灵科技研发的,国产唯一的开源数据湖存储框架,并于近期发布了 2.0 升级版本。本文将结合大数据架构的演变历史及业务需求,深度剖析国产唯一开源湖仓一体框架 LakeSoul 带来的现代化数据架构和关键业务价值。

数据架构的演进

从传统数据库到数仓再到数据湖,数据架构一直伴随着业务需求的驱动不断迭代,使数据应用场景向复杂化、多元化转变,从最初的交易场景,到分析场景,再到混合场景、复杂分析场景,最后到如今的实时混合场景,大数据架构也在不断演进:

图片


在数据架构演进中,不同的架构方案也存在着缺陷:

1. 传统数仓。传统数据仓库作为一个中心化的数据源,仍然沿用了数据库的架构,即计算存储耦合在一起,不方便扩展,成本较高。并且中心数据仓库通常需要专门团队来开发维护,面对纷繁的业务需求往往存在响应不及时等问题。
2.Hadoop 数仓。目前有大量的企业使用 Hadoop + Hive 的方式搭建数据仓库。然而由于 Hive 无法支持实时、流式的场景,需要通过 Lambda 架构维护实时、批量两套数据处理逻辑,带来重复开发、数据口径不一致、架构复杂等问题。
3. 数据湖。数据湖使用云上的对象存储,能够解决存储扩展性问题。然而数据湖原先是为存储任意类型的数据所设计,缺乏对元数据的组织管理,容易形成数据沼泽,难以发挥数据的价值。
4. 湖仓一体。湖仓一体作为新一代架构,仍然需要解决 Hadoop/Lambda 架构的固有缺陷,即实时、批量无法统一。甚至由于对象存储的一些问题,实时计算的存储变得更加困难,性能也难以满足新兴的业务需求;各类 SQL、AI 的计算框架与对象存储的适配也不完善。

数元灵科技认为,解决以上各类问题,首先需要有一套完善的湖仓存储,在云上提供数据高并发、高吞吐读写的能力和完整的数仓管理能力,并且将这样的存储能力以通用的方式提供给多种计算引擎访问;这也是数元灵科技研发 LakeSoul 的初衷。

LakeSoul :构建现代化数据智能架构

LakeSoul 是北京数元灵科技自主研发的湖仓一体存储框架,也是目前国内唯一的开源湖仓平台。LakeSoul 开源项目地址:https://github.com/meta-soul/LakeSoul

作为现代化的数据智能架构的底层支撑,LakeSoul 具有以下几个核心能力:

1. 流批一体的存储

LakeSoul 在存储层面,统一支持实时和批量两种方式对湖仓中的数据进行更新写入和读取,不再需要分别开发两套不同的数据链路。这一方面大幅降低了开发成本,也消除了两套链路带来的数据口径不一致等问题,并且使用者不再需要维护多个存储系统,能够节省大量资源成本。

2. 在数据湖上构建数据仓库

通过 LakeSoul 在数据湖上构建数据仓库,能够充分利用云原生架构下对计算资源和存储资源的弹性能力。LakeSoul 针对对象存储做了专门的性能优化,在数据湖上构建出完整的实时数仓功能,支持数据的实时更新写入。湖仓一体化的方式大幅简化基础设施的使用门槛,并极大提升资源利用效率和性能。

3. 支持多种数据计算引擎

数据的价值释放有多种方式,包括如报表分析和算法模型落地等。LakeSoul 在统一的湖仓存储层之上,支持多种计算引擎,提供涵盖数据实时导入、数据分析、BI 报表、AI 模型训练等多种计算模式。使用一套湖仓存储即可完成全链路的实时数据智能业务搭建,开箱即用。开发者能够专注业务数据的处理逻辑,构建以数据为中心的开发范式。

LakeSoul 通过统一的实时、批量存储的核心能力,构建了流批一体、湖仓一体、分析智能一体的现代湖仓数据智能架构。

基于 LakeSoul 的湖仓智能架构如下图所示:

图片


LakeSoul 的核心技术特性解读

1. 高可扩展的 Catalog 元数据服务

随着数据量的快速增长,数据仓库需要能够处理快速增加的分区和文件。LakeSoul 使用 PostgreSQL 数据库来存储 Catalog 信息,提升元数据可扩展性和事务并发能力。

LakeSoul 通过精心组织元数据层表的主键和索引,对一个叶子级别分区只需要做一次主键操作就可以获得这个分区的所有信息,以及读写当前版本的 snapshot 等。一个分区的 snapshot 中包含了全量写入和增量更新的文件完整路径和提交类型。通过对 snapshot 中文件提交进行顺序的遍历,就可以构建出该分区读取计划。这样一方面分区信息访问很高效,另一方面也避免了对文件目录的遍历,对于 S3、OSS 这样的对象存储系统是比较重要的优化手段。LakeSoul 的分区管理机制示意:

图片


2. 支持并发写和 ACID 事务

LakeSoul 通过元数据服务实现了并发控制,在同一分区支持多个作业并发更新,通过智能区分写入类型来控制合并或回退机制。具体来说,当计算引擎产出要提交的各个分区的文件后,会首先提交分区文件更新的信息,例如全量更新或增量更新,然后通过元数据事务操作来更新读者可见的版本。在检测到并发更新发生的场景,LakeSoul 会自动区分写入类型判断是否属于有冲突情形,并决定是自动解决冲突还是需要回退数据计算。冲突检测的具体规则如下表所示(X 表示这种冲突不能自动解决,会通过抛异常的方式交给业务层处理):

图片


3. 支持增量写入和 Upsert 更新

LakeSoul 提供了增量追加和行列级别 Upsert 的功能,支持 Merge on Read 模式,提升数据摄入的灵活性和性能。LakeSoul 实现了高效的 Merge on Read,在表具有主键的情况下,LakeSoul 支持了更为高效的 Upsert 机制。在每个主键哈希分桶内,LakeSoul 将文件根据主键进行排序。执行多次 Upsert 后,就获得了多个有序的文件。对于读取作业,只需要将这些有序文件进行归并,即可完成 Merge on Read。Upsert 的示意如下:

图片


通过这样的方式,写入时不需要读取并合并数据,提供了很高的写入性能。而经过优化的 Merge Reader 保证了读性能不受损失。

4. 实时数仓功能

LakeSoul 支持流式和批量的写入,行列级别更新,通过 SQL 即可完成绝大部分更新操作,使用体验更接近于数据库。同时,LakeSoul 支持 MVCC 多版本控制,并提供了快照读(Time Travel)和版本回滚的功能。在 2.0 版本更新中,还支持了 Flink CDC 实时写入,通过将 CDC 更新流转化为 LakeSoul 的 Upsert 操作,能够实现高效的实时入湖。通过对接 Flink Table API,同样能够通过几行 SQL 完成在线数据库的 CDC 入湖。

5. 开放生态

LakeSoul 使用 Parquet 作为文件存储格式,支持云上对象存储,并提供抽象统一的存储访问层,能够很方便的对接各类计算引擎。目前能够支持 Spark、Flink,并支持将表分区自动导入到 Hive Meta 中。近期 LakeSoul 还将支持对接 Presto 等 MPP 计算引擎,从而更加完整地支持 ETL、OLAP、AI 模型训练等各类数据智能计算业务。

LakeSoul 的业务价值

LakeSoul 现代湖仓数据智能架构能够带来如下几个核心业务价值:

  • 大幅简化数据智能架构,降低运维成本
  • 计算成本降低,不需要多套存储
  • 不依赖 Kafka 或 Flink 等有状态服务
  • 避免资源潮汐效应
  • 简化开发流程,降低人力成本
  • 使用 SQL、Python 即可快速开发数据智能业务
  • 现有数仓逻辑可以快速迁移,改造难度低
  • 数据可靠,状态可见透明,提升数据使用效率
  • 每层计算结果实时可见、可查询,数据可复用
  • 上游补数、修复简单快捷,避免单点故障
  • 避免数据孤岛、数据冗余、数据沼泽
  • 全链路 T+0 实时计算
  • 计算延迟大幅降低,天级降低到分钟级
  • 业务效果快速反馈

LakeSoul 应用场景举例

1. 实时数据快速导入湖仓

使用 LakeSoul 提供的 Flink CDC Sink 功能,可以将在线数据库的变更实时同步到 LakeSoul 湖仓,不再需要 T+1 导入作业,从数据源头实现实时化。并且得益于 Flink CDC,也不再需要额外部署 Kafka 等组件。实时数据入湖的架构流程:

图片


可以看到 LakeSoul 实时入湖只需要一条流式的链路即可完成入湖,不需要额外的批处理流程,既简化开发工作量,消除数据口径不一致,也简化了部署架构,显著降低了运维成本。

2. 实时分析报表

LakeSoul 的流批一体更新的特性,使得报表开发者不需要使用复杂的计算引擎接口来开发流式计算的作业,通过 SQL 即可完成实时的数据提取和转换和开发,无论是 ETL 还是数据分析的流程都更加简单:

图片


通过 LakeSoul 能够快速上线实时 BI 报表,随时高效支撑商业决策。

3. AI 应用落地

在互联网搜广推业务中,需要不断积累用户的实时反馈,并结合历史数据进行模型训练,自然是流批一体发挥巨大价值的重要场景。通过 LakeSoul 可以很好地支持实时搜广推的 Online Learning 范式,构建实时的机器学习样本库,无缝对接 AI 模型的实时训练和在线推理,实现数据智能化的应用。

图片


结语

LakeSoul 作为当前国产唯一的开源湖仓一体框架,近期发布了 2.0 版本,增加了 Flink CDC、快照回滚、Hive 对接等业务生态功能,进一步增强和丰富了在实际生产环境中的业务落地能力。LakeSoul 带来现代化的湖仓数据智能架构,能够大幅降低数据智能应用的开发运维门槛,让数据智能成为触手可及的技术,充分释放数据的业务价值红利。

点击「阅读原文」,直接访问 Github。
产业数据湖
暂无评论
暂无评论~