数据湖与实时数仓应用实践( 三 )


数据湖与实时数仓应用实践

文章插图
分析套件的功能架构主要包括指标语言的建设和指标加速两个方面 。首先,指标语言的建设是指如何定义和管理功能指标 。用户可以使用统一 ML 模型语言来定义复杂的指标逻辑,包括指标的计算、聚合和过滤等操作 。这样可以帮助用户更好地理解和描述业务需求 。
其次,指标加速是非常重要的一点 。由于用户建立的指标逻辑可能非常复杂,我们需要在用户查询时能够快速地找到指标数据 。为了实现指标的快速查询,我们采用了一系列优化技术,包括数据索引、缓存和并行计算等 。通过这些加速技术,可以大大提高指标查询的效率,使用户能够快速获取所需的数据 。
数据湖与实时数仓应用实践

文章插图
分析套件的价值在于提供了无门槛的数据洞察能力,即使不懂 SQL 的人也能够建立指标 。用户只需要进行简单的配置,比如配置一些原子指标和修饰词,然后指定一些加工公式,就能够计算出所需的指标 。通过仪表盘等工具,用户可以洞察到隐藏在数据背后的业务见解 。
另外,统一指标服务是通过模型语言提供各种对外的 API,如 JDBC 和 SDK 等 。这样可以方便用户通过外部工具访问和查询指标数据 。此外,CubeLess 是用于构建数据立方体的一种技术 。它通过底层的预计算能力和缓存技术 , 事先计算好指标并加速查询 。同时 , 分析套件还可以轻松对接各种流行的BI工具,提供加速查询的能力 。
数据湖与实时数仓应用实践

文章插图
下面重点介绍开发治理套件 。开发治理套件是一个相对传统的数据开发和管理工具,按照常规的数据链路进行数据开发 。首先,进行数据标准化和建立模型,然后进行数据开发,其中涉及到数据的血缘关系和调度 。这个过程涉及到元数据,然后发布到生产环境中进行运行 。在这个过程中,还需要进行质量校验、数据集成和数据安全(如加密和脱敏)等处理 , 最终对外提供服务 。整个流程比较标准化 。
数据湖与实时数仓应用实践

文章插图
最底层的存和算引擎是湖仓引擎 , 主要解决高效存储和计算的问题 。在存储方面,我们采用了表格式,主要使用了 Apache 的 Iceberg,并进行了大量的二次开发 。在计算方面,我们为不同的工作负载提供了三种内置的算力引擎 。对于离线工作负载,提供了 Spark;对于实时工作负载 , 提供了Flink;而对于机器查询和分析工作负载,则提供了内置的 Trino 组件 。这样,能够满足不同场景下的高效存储和计算需求 。
数据湖与实时数仓应用实践

文章插图
湖仓引擎的价值主要在于:
首先,能够提供多工作负载,并能够以云化方式提供数据服务,也就是它的工作负载 。不同的工作负载有不同的内置组件来支撑 。
另外,它的架构是存算分离的,它的存储底座可以对接各种对象存储,可以提供 PB 乃至 EB 级的海量数据存储 。
分布式数据湖架构,企业可以建立多个数据湖 , 包括总公司和各个分公司的数据湖 。然而,如何实现不同数据湖之间的有效数据共享是一个需要解决的问题 。
数据湖与实时数仓应用实践

文章插图
逻辑入湖与物理入湖是数据管理和分析领域的两种不同方法 。物理入湖是将传统的数据完全搬迁到数据湖中,并在数据湖上构建数据仓库或进行数据分析 。在物理入湖的过程中,通常会采用批流一体的方式,将离线和实时数据处理合并为一条数据流,以提高数据处理效率 。此外,还需要对整个数据集成过程进行管理,包括处理数据结构变更的问题,以确保数据湖中的数据与源数据保持同步 。
逻辑入湖是一种基于 Fabric 架构的实践方法 。它的主要技术要求是统一元数据,包括已经入湖的数据和未入湖的数据 。逻辑入湖并不涉及将数据搬迁到数据湖中,而是通过管理元数据的方式,将元数据捞取过来并进行管理 。数据仍然保留在原始位置 。在数据仓库层进行数据加工和分析时 , 可以直接使用SQL进行操作,无需关心数据的具体存储位置 。
数据湖与实时数仓应用实践

文章插图
分布式数据湖是一个多湖的概念,它可以解决大型企业中总公司和分公司之间数据交换的问题 。以中国移动为例,总公司和各个省分公司都有自己的数据仓库和数据湖 。为了实现数据交换 , 可以采用分布式多湖联邦查询的能力来解决 。具体做法是 , 分公司可以将自己的数据湖注册到总公司,并提供一个注册账号来管理权限 。这个注册账号可以控制总公司对分公司数据的访问权限,可以随时扩大或缩小权限,甚至收回权限 。这样就实现了有限制的数据分享,不需要将所有权限开放给总公司 。例如,可以只开放读权限而不开放写权限 。分布式数据湖的架构主要解决这种情况下的数据交换问题 。


推荐阅读