湖仓一体架构

一、湖仓一体的概念解析

湖仓一体是一种新型的架构,将数据仓库的高性能及管理能力与数据湖的灵活性融合起来。诞生于 1990 年的数据仓库适合存储结构化、信息密度高、经过处理后的数据,存储规范,易于快速读取,但灵活性不足;而诞生于 2011 年的数据湖可以低成本存储任何形式及格式的原始数据,却缺乏结构性。湖仓一体则类似于在湖边搭建了很多小仓库,有的负责数据分析,有的运转机器学习,有的来检索音视频等,数据源流都可以从数据湖里轻松获取。它为企业数据治理带来了诸多便利性,底层支持多种数据类型并存,能实现数据间的相互共享,上层可以通过统一封装的接口进行访问,可同时支持实时查询和分析。例如,在企业中,数据往往要为业务系统提供并发的读取和写入,湖仓一体对事务的 ACID 支持,可确保数据并发访问的一致性、正确性。同时,它采用开放、标准化的存储格式,如 Parquet 等,提供丰富的 API 支持,各种工具和引擎可以高效地对数据进行直接访问,包括机器学习和 Python / R 库等。湖仓一体还支持多种数据类型,包括结构化、半结构化、非结构化数据,如图像、视频、音频、半结构化数据和文本等,可为许多应用程序提供数据的入库、转换、分析和访问。

二、湖仓一体的技术支撑

(一)可扩展的连接框架

元数据对接在 FE 完成,FE 的 MetaData 管理器可实现基于 HiveMetastore、JDBC 和文件的元数据对接和管理工作。在数据读取方面,通过 NativeReader 可以高效地读取存放在 HDFS、对象存储上的 Parquet、ORC、Text 格式数据,还可以通过 JniConnector 对接 Java 大数据生态。这种可扩展的连接框架使得湖仓一体能够与多种数据源进行对接,为数据的集成和分析提供了便利。

(二)高效缓存策略

Doris 通过元数据缓存、数据缓存和查询结果缓存来提升查询性能。元数据缓存提供了手动同步元数据、定期自动同步元数据、元数据订阅(只支持 HiveMetastore)三种方式,将数据湖的元数据信息同步到 Doris,并存储在 Doris 的 FE 的内存中,保障了元数据的实时和高效,每秒可以处理 100 个以上的元数据事件。高效的数据缓存包括文件缓存,将数据湖中的热点数据存储在本地磁盘上,减少网络数据传输,提高数据访问性能;缓存分布策略采用一致性哈希将数据分布在各个 BE 节点上,避免节点扩缩容带来的缓存失效问题;缓存淘汰(更新)策略在发现数据文件对应的元数据更新后,及时淘汰缓存以保障数据的一致性。查询结果缓存根据 SQL 语句将之前查询的结果缓存起来,极大提高了查询的效率和并发,分区缓存还支持将部分分区数据缓存在 BE 端提升查询效率。

(三)高效的 NativeReader

自研 NativeReader 具有避免数据转换、延迟物化、向量化读取数据等优势。如果直接使用开源的 Parquet 或者 ORCReader,会存在 Doris 列存和 Parquet/ORC 列存的转换过程,增加格式转换的开销。自研的 NativeReader 直接读取 Parquet、ORC 文件,提高查询效率。同时,NativeReader 能很好地利用智能索引和过滤器提高数据读取效率,例如先把 ID 列单独读出来,在这一列上做完过滤后,把过滤后的行号记录下来,再去读剩下两列,减少数据扫描,加速文件的分析性能。在文件数据的读取过程中引入向量化的方式读取数据,极大加速了数据读取效率。

(四)MergeIO

在网络中出现大量小文件的网络 IO 请求会影响 IO 性能,采用 IO 合并优化这种情况。设置一个策略将小于 3MB 的 IO 请求合并在一次请求中处理,例如之前可能是有 8 次的小的 IO 请求,可以把 8 次合并成 5 次 IO 请求去读取数据。这样减少了网络 IO 请求的速度,提高了网络访问数据的效率。虽然 MergeIO 可能会读取一些不必要的数据,但从整体的吞吐上来讲其性能有很大的提高,在碎文件(比如:1KB – 1MB)较多的场景优化效果很明显。同时通过控制 MergeIO 的大小来达到整体的平衡。

(五)统计信息提高查询规划效果

Doris 通过收集统计信息有助于优化器了解数据分布特性。在进行 CBO(基于成本优化)时,优化器会利用这些统计信息来计算谓词的选择性,并估算每个执行计划的成本,从而选择更优的计划以大幅提升查询效率。在数据湖场景可以通过收集外表的统计信息来提升查询规划器的效果。统计信息的收集方式包括手动收集和自动收集。同时为了保证收集统计信息不会对 BE 产生压力,支持了采样收集统计信息。在一些场景下,用户历史数据可能很少查找,但是热数据会被经常访问,因此也提供了基于分区的统计信息收集,在保障热数据高效的查询效率和统计信息收集对 BE 产生负载的中间取得平衡。

三、湖仓一体的行业背景

(一)数据仓库与数据湖的发展历程

数据仓库诞生于 1990 年,其适合存储结构化、信息密度高、经过处理后的数据,存储规范,易于快速读取。然而,其灵活性不足。随着互联网的发展,数据量呈爆炸式增长,传统的数据仓库难以应对如此庞大的数据量和多样化的数据类型。

在这个背景下,数据湖应运而生。数据湖可以低成本存储任何形式及格式的原始数据,其优势在于能够存储大量的非结构化数据,具有很强的开放性和灵活性。例如,在互联网行业,企业可以将生产经营中产生的所有数据都放入数据湖,方便后续进行机器学习、探索式分析等。

但数据湖也存在一些问题。一方面,数据湖缺乏结构性,数据存储较为无序,若不进行合理约束,时间久了就会变成数据沼泽。比如数据写入数据湖的时候要保证 ACID,要高效支持 upsert /delete 历史数据,要能容忍数据频繁导入文件系统上产生的大量的小文件,而显然 HDFS 在这方面就存在不足。另一方面,数据湖中的数据处理需要足够强大的存储架构和数据处理能力,例如 Delta、iceberg 和 hudi 等开源数据湖就是为了解决这些问题而出现的特定技术解决方案,但目前很多企业连 hadoop 生态还没搞通搞透,又出现这么多技术,且没有统一标准,让人头大。

(二)湖仓一体的诞生

湖仓一体作为结合数据湖和数据仓库优势的新范式,是一种将数据仓库的高性能及管理能力与数据湖的灵活性融合起来的新型架构。它类似于在湖边搭建了很多小仓库,有的负责数据分析,有的运转机器学习,有的来检索音视频等,数据源流都可以从数据湖里轻松获取。

湖仓一体具有以下定义和特点:首先,它底层支持多种数据类型并存,能实现数据间的相互共享,上层可以通过统一封装的接口进行访问,可同时支持实时查询和分析。其次,对事务的 ACID 支持,可确保数据并发访问的一致性、正确性。再者,采用开放、标准化的存储格式,如 Parquet 等,提供丰富的 API 支持,各种工具和引擎可以高效地对数据进行直接访问,包括机器学习和 Python / R 库等。还支持多种数据类型,包括结构化、半结构化、非结构化数据,如图像、视频、音频、半结构化数据和文本等,可为许多应用程序提供数据的入库、转换、分析和访问。

与 “数据湖 + 数据仓库” 相比,湖仓一体更加紧密地融合了两者的优势。在 “数据湖 + 数据仓库” 的模式下,数据往往存在冗余,且不同系统之间的数据同步和管理较为复杂。而湖仓一体通过将数据仓库构建在数据湖上,使得存储变得更为廉价和弹性,同时能够有效地提升数据质量,减小数据冗余。例如,ETL 在湖仓一体的构建中起到非常重要的作用,它能够将未经规整的数据湖层数据转换成数仓层结构化的数据。

四、湖仓一体的价值体现

(一)数据计算优势

湖仓融合路线在数据计算方面具有显著优势。首先,它消除了数据冗余。传统的数据架构中,数据往往在数据湖和数据仓库中重复存储,导致存储资源的浪费和数据管理的复杂性。而湖仓融合实现了数据的统一存储和管理,避免了数据的重复存储,降低了存储成本。例如,在湖上建仓的架构中,同一份数据仍以不同的模式存储在数据湖和数据仓库中,数据冗余并没有彻底消除。而湖仓融合架构将数据仓库构建在数据湖上,实现了数据的单一存储,有效解决了数据冗余问题。

其次,湖仓融合具备 ACID 事务性。数据湖中的大部分数据通常是非结构化数据,传统的数据仓库并不支持对数据湖数据的治理,导致数据湖数据难以支持 ACID 事务性。而湖仓融合架构通过先进的技术手段,实现了对全量数据的 ACID 事务性支持,确保了数据的一致性、完整性和可靠性。这对于企业级应用场景至关重要,尤其是在需要进行复杂数据分析和处理的情况下,ACID 事务性能够保证数据的准确性和稳定性。

(二)数据管理理念

湖仓融合采用了先进的数据工程和管理理念,能够支持多场景融合分析。在数据工程方面,湖仓融合架构实现了数据的统一存储、计算、开发、管理和服务,为企业提供了一站式的数据解决方案。它支持多种高级分析引擎,如数据科学、机器学习、深度学习等,能够满足企业不同业务场景下的数据分析需求。例如,在数字化转型时代,企业需要进行描述性分析、预测性分析、诊断决策性分析以及探索性分析等多种分析,湖仓融合架构能够为这些分析提供强大的技术支持。

在数据管理方面,湖仓融合架构实现了元数据的统一管理,为数据的全生命周期管理提供了保障。它能够对数据进行有效的版本控制和索引管理,提高了数据的可访问性和可管理性。同时,湖仓融合架构还支持数据的质量控制和治理,确保数据的准确性和完整性。例如,通过数据湖查询加速功能,Doris 作为一个高效的 OLAP 查询引擎,能够对湖上数据进行加速分析,提高数据查询的效率和性能。

(三)降低迁移风险成本

湖仓一体通过数据虚拟化降低了数据迁移的风险和成本,为企业数字化转型提供了有效的解决方案。在传统的数据架构中,企业进行数据迁移时往往需要进行大量的数据转换和迁移工作,这不仅耗时费力,而且还存在数据丢失和损坏的风险。而湖仓一体架构通过数据虚拟化技术,将不同数据源的数据进行抽象和整合,使得企业可以在不进行实际数据迁移的情况下,实现对不同数据源数据的统一访问和分析。

例如,HashData 采用湖仓一体架构,能够实现数据仓库和数据湖的数据无缝打通和自由流动,减少重复建设,最大化降低数据转换和迁移成本。通过多种灵活的数据入库方式,HashData 支持 MySQL、ORACLE、Python、Postgres、NAS、HDFS 等多种数据源的数据导入,并自动完成数据格式转换,助力用户轻松上云,提高转换率、降低数据库迁移成本。

此外,湖仓一体架构还能够为企业提供更加灵活的数据管理和分析方式。企业可以根据自身的业务需求,选择不同的数据源进行分析,而无需进行大规模的数据迁移和整合。这不仅提高了企业的数据管理效率,而且还降低了企业的运营成本。例如,在企业进行数据分析时,可以直接从数据湖中获取原始数据进行分析,也可以从数据仓库中获取经过处理和结构化的数据进行分析,满足了企业不同业务场景下的数据分析需求。

五、湖仓一体的商业应用

(一)金融行业应用

工商银行携手华为云 FusionInsight 智能数据湖持续创新探索,让工行大数据平台持续演进。通过滚动升级,实现业务无中断;通过大数据存算分离,使全局数据统一存储,上层架构更灵活;通过 HetuEngine 提升全行 13000 名分析师即时 BI 体验,形成集技术、数据、服务于一体的大数据服务体系,不断提升工行金融服务实体经济能力。

先进数通商业银行湖仓一体解决方案提升了数据管理能力,为数字化转型打下坚实基础。通过建设湖仓一体化平台,提升快速响应服务能力,明确数据湖、数据仓库、数据集市的定位及数据保存周期,建立数据采集交换原则、规范及流程。提高系统数据流转处理效率,拥有强大的海量数据存储及分析处理能力,支持横向扩展。提升数据服务能力,为各部门及各管理机构提供数据依据,增强报表自助式服务,解决各级机构使用数据难的现状。

(二)其他行业应用

在食品、饮料行业,某数仓技术能帮助企业高效管理数据,并利用它们做出更好的决策,从而提高企业竞争力。在供应链管理方面,Redshift 和 S3 可用于存储、分析与库存水平、生产能力和运输物流相关的数据,通过帮助公司识别瓶颈、优化供应链,实现减少浪费和提高效率,最终打造一个更有效和更有竞争力的供应链。

在化工行业,某科技企业引入湖仓一体化架构,融合数据湖和数据仓技术,构建统一数据湖,接入海量的煤矿生产数据和经营数据,结合业务需求开展数据分析应用,构建数据应用场景。数梦工场以 “湖仓一体化数据平台 + 批流一体化数据开发” 模式构建石化化工行业数据资源体系实施方案,通过统一元数据管理、实时数据清洗治理、IT 和 OT 数据融合开发,实现数据资源的统一管理和调度。

湖仓一体业务价值在这些行业中体现为帮助企业更好地控制供应链,并且可以帮助企业更好地满足客户需求。其优势包括提高生产效率、降低成本、提高库存管理效率、减少损耗和提高客户满意度等。湖仓一体技术的应用场景广泛,为不同行业的企业带来了诸多好处,助力企业实现数字化转型和提升市场竞争力。

热门词条
    产品推荐
    全渠道一盘货OMS方案
    全渠道一盘货库存管理与共享/全渠道订单智能路由履约