一、数据湖发展趋势分析
当下,数据湖已成为企业数据平台架构的重要组成部分。传统的数据平台架构一般由数据湖、流式计算和 OLAP 引擎查询三个部分组成:
这三个平台在以往通常是独立建设的,集群也是独立部署。三者之间数据互相拉通,采用以下方案:
湖平台与流式平台的互通:通常采用 Lambda 架构搭建实时计算平台和离线批量计算平台,以实现流式计算与数据湖之间的协同。
流式计算平台与 OLAP 仓互通:一般实际与计算引擎的数据源对接方式拉通,还会基于 Kappa 架构在流式计算中进行实时的数据加工处理,将计算结果写入数仓中,以实现实时的 OLAP 查询,这也是通常讲的实时数仓解决方案。
湖平台与数仓平台互通:一般是通过数据拷贝方式,将数据湖的原始数据或者批量计算结果数据复制一份到数仓当中。
以上的解决方案存在一些问题。首先,从建设和维护的角度来看,这种架构需要分别建设三个平台,导致建设与维护成本增大;其次,数据共享需要进行一定的冗余存储和数据拷贝,导致方案复杂读变高。因此大家现在在逐渐尝试将三个功能平台融合到一起,形成融合数据湖。
在融合数据湖中,将通过流批一体的架构实现实时计算和批量计算的数据共享,解决数据冗余和数据搬迁的问题。通过湖内建仓的方式,在数据湖实现数仓的能力,构建 OLAP 能力,避免了数据的搬迁。这种融合数据湖的架构不仅可以提高数据处理的效率,还可以降低数据平台的建设和维护成本,实现数据的共享和流通。
上图是一个基于开源技术的数据湖参考架构,从数据流上分为几个环节:
数据源 :数据流的起点,来源于业务系统,包括业务数据库、消息流、日志等。
数据集成 :数据湖架构中的重要环节。数据集成是业务系统与数据湖之间的桥梁,实现入湖和出湖的能力。通过批量和实时能力,可以实现 T+1 和 T+0 的集成能力。根据业务诉求和具体业务架构选择不同的集成方式。
数据存储: 采用开源的 Lakehouse 技术进行数据存储管理。底层的存储引擎可以采用 Hadoop 的 HDFS 组件也可以采用对象存储引擎。存储格式采 Parquet 和 ORC 格式,这些格式提供了高效的压缩和编码方式,有助于提升数据的存储和处理效率。基于 Lakehouse 技术,构建数仓能力,例如:ACID 能力、Update 能力、Schema 的演进,以及查询加速的缓存和索引技术。
数据计算 :采用支持流批一体的计算引擎,如 Spark 和 Flink,也可以基于 Hive 引擎进行批量计算。
湖内交互式分析: 通过交互式查询引擎 Presto、Trino 等,实现对湖内数据进行查询分析,通过湖存储的加速技术加持,查询性能也可以实现秒级时延。
OLAP层 :在湖内进行数据加工处理完成后,需要更快速的查询能力,通过数据集成同步到 OLAP 组件,根据具体业务需求,我们可以选择不同的组件,如 CK 大宽表的快速查询和 HBase KV 查询等。当前部分 OLAP 组件也可以直接查询湖内数据,避免了数据搬迁。
以上环节组合形成完整数据平台架构,满足多种业务场景的技术诉求。
数据集成是业务系统与数据湖之间的桥梁,要面对多种不同的数据源。在流批一体的数据湖平台中,数据集成主要分为批量集成和实时集成两种方式。
批量集成 :采用定时周期性的搬迁方式,将上游数据一次性搬迁到数据湖,或者将数据湖的数据搬迁到 OLAP 组件,例如 Sqoop、DataX 等开源组件,通过 JDBC 连接到源数据库,将数据抽取出来并写入数据湖中。这种方式适用于对时效性要求不高的场景,面临的挑战主要是大数据量的集成带来的吞吐压力。
实时集成 :采用上游数据变更触发的数据搬迁方式,通常采用实时增量技术采集上游数据。通常会利用开源技术如 Flink CDC(Change>
随着技术的发展,一些开源工具已经能够实现流批一体的实时数据集成,这些工具不仅可以降低建设成本,还能够减少技术复杂度。
在数据湖的存储层,Lakehouse 技术的应用为数据处理和分析带来了革命性的变革。Lakehouse 不仅继承了数据湖的灵活性和可扩展性,还引入了数据仓库的关键特性,如 ACID 事务、强一致性 Schema 管理、SQL 查询等。以下是Lakehouse 技术应具备的关键能力:
在现代数据湖的 Lakehouse 架构中,保持开放性的设计原则是至关重要的。这种开放性体现在几个关键方面:
流批一体架构是现代数据处理平台的核心特征之一,它实现了数据存储、计算的深度融合。流批一体通常包含三种解释:
OLAP 能力是实现快速数据分析和决策支持的关键。为了满足业务对快速响应和高效处理的需求,需要提供秒级的查询时延和数百级别的并发查询能力。随着业务的发展具体的能力会有所变动,在面对业务量的大幅波动时,基于数据湖架构能够迅速扩展计算能力,以应对高业务压力的挑战。
此外,基于容器化的部署能力,数据湖可以实现根据业务量的弹性伸缩。这种灵活性不仅提高了资源利用率,还确保了在高峰时段能够提供足够的计算资源,以满足业务需求。在业务量减少时,资源可以相应地缩减,以优化成本效率。
在数据湖架构中,湖内建仓的概念是将数据仓库的能力集成到数据湖内部,以实现数据的高效管理和分析。这一过程涉及多层的存储优化和数据组织。
首先,在数据文件层,我们实施存储优化技术,如排序存储和哈希分布,以提高数据文件的访问效率。此外,我们还进行数据打散和内容组织优化,以进一步加速 OLAP 查询。
接下来是索引层的构建。为了加速计算过程,采用与数据仓库类似的技术,包括数据裁剪、下推和缓冲等,以优化计算性能。同时,提供统一的元数据服务,确保数据资产的统一视图,并统一数据开发中的数据库管理。
在数仓模型方面,继续使用传统的数仓分层存储模型,如 ODS、DWS 和ADS,同时根据业务需求对数据进行主题域划分,以实现更精细的数据管理。
在表模型方面,采用常见的快照表模型和拉链表模型进行数据存储,并根据需要采用其他模型。通过这些方式,我们能够在数据湖内部实现数仓的数据管理能力和数据处理能力。
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/xinwenzixun/36599.html