智能湖仓:那你必须了解下国产唯一开源湖仓了
智能湖仓:那你必须了解下国产唯一开源湖仓了2.Hadoop 数仓。目前有大量的企业使用 Hadoop Hive 的方式搭建数据仓库。然而由于 Hive 无法支持实时、流式的场景,需要通过 Lambda 架构维护实时、批量两套数据处理逻辑,带来重复开发、数据口径不一致、架构复杂等问题。1. 传统数仓。传统数据仓库作为一个中心化的数据源,仍然沿用了数据库的架构,即计算存储耦合在一起,不方便扩展,成本较高。并且中心数据仓库通常需要专门团队来开发维护,面对纷繁的业务需求往往存在响应不及时等问题。数据架构的演进从传统数据库到数仓再到数据湖,数据架构一直伴随着业务需求的驱动不断迭代,使数据应用场景向复杂化、多元化转变,从最初的交易场景,到分析场景,再到混合场景、复杂分析场景,最后到如今的实时混合场景,大数据架构也在不断演进:在数据架构演进中,不同的架构方案也存在着缺陷:
机器之心发布
机器之心编辑部
国产唯一的开源数据湖存储框架 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 的示意如下: