【云驻共创】GaussDB(DWS)湖仓融合技术解析
摘要
在智能数据时代,GaussDB(DWS)数据仓库的湖仓融合技术成为企业应对数据爆发式增长和形态多样化的关键。该技术不仅实现了与大数据生态的快速对接,更高效地访问开源数据,还助力企业从海量、多样化的数据中挖掘更多业务价值。本期直播将深入解析GaussDB(DWS)湖仓融合技术的原理、优势及应用,为企业提供更全面、深入的数据洞察。
一、数据湖简介
1.数据湖的概念与理解
数据湖,是一个集中式存储和处理各种类型数据的平台。无论是结构化、半结构化还是无结构化的数据,都可以在这个湖中统一存储和管理。云厂商通常基于对象存储如S3、OSS、OBS等构建数据湖的底层存储,这样的设计不仅提供了海量的存储空间,而且具有极高的可靠性和扩展性。
在大数据和互联网领域,数据湖的发展进一步推动了技术的进步。例如,Iceberg、Hudi、Delta Lake等技术的出现,使得数据湖可以支持更高级的操作,如Upsert、Delete和事务操作等,这些都是Hive等传统大数据平台所不具备的。这些技术为数据湖提供了准实时的处理能力,使得数据湖不再仅仅是一个简单的数据存储仓库,而变成了一个真正的数据处理中心。
对于传统用户来说,数据湖可能更多地与Hadoop集群相关联。Hadoop集群作为一个分布式计算框架,能够支持各种类型的数据存储和处理。在Hadoop集群中,数据湖就是一个能够存储所有类型数据的统一存储平台。
2.数据湖的优势
- 更低的存储成本与更高的可靠性:使用对象存储作为底层,相比传统的存储方式,可以大大降低存储成本。同时,通过编码方式降低副本数据量,保证了高可靠性,使用户无需担心数据丢失。
- 更好的Table format和File format:支持ACID事务和Schema Evolution,提供了更灵活的表格式。在文件格式上,支持半结构化的map、Struct、Json等,以及更多的索引,使得文件的查询和存储效率更高。
- 统一的Catalog:通过统一的Catalog,可以实现统一的元数据管理、权限管理、统计信息管理、入湖管理等,极大地简化了数据管理流程。
3.湖仓融合的需求与意义
随着数据处理的复杂性不断提升,单一的数据湖或数据仓库已经无法满足所有需求。湖仓融合的出现,就是为了解决这一问题。
- 数仓加速:数据湖虽然提供了海量的存储空间,但在查询性能上可能有所欠缺。通过湖仓融合,可以利用数据仓库的加速手段来提升查询性能。
- 实时分析:传统的数据湖在实时性方面有所不足。湖仓融合后,可以利用Iceberg或Hudi等技术,实现分钟级甚至秒级的实时分析。
- 高并发查询:对于高并发查询场景,数据仓库具有天然的优势。湖仓融合后,可以更好地应对这类场景,提供更高的查询性能。
- 降本增效与数据治理:湖仓融合可以简化技术架构,降低运维成本,同时统一主数据和元数据,为上层的数据治理提供基础。
4.场景示例:湖内建仓与数据湖查询加速
湖仓融合可以应用于各种场景。例如,在金融风控、市场营销、数据交易等领域,都可以利用湖仓融合的优势来提升数据处理和查询的效率。通过在数据湖中构建数据仓库,并利用DWS等查询引擎进行加速,可以实现数据的充分共享和多引擎分析,避免了数据的重复搬运和处理。
5.DWS大数据湖仓一体概述
在DWS大数据湖仓一体的架构中,实现了数据在OBS的统一存储和格式共享。无论是结构化、半结构化还是无结构化的数据,都可以在同一个OBS存储系统中得到高效管理。元数据的统一管理,确保数据的一致性和高效访问。
对于用户而言,他们可以通过简单的操作来创建和管理数据表。例如,数仓用户可以通过SQL语句来创建数据表T1,并进行读写操作。支持跨引擎的数据访问,比如用户可以在DWS集群中直接查询存储在Hive中的数据表T1,实现数据的无缝访问。
6.数据格式支持
DWS大数据湖仓一体支持多种数据格式,以满足不同场景下的数据处理需求。
- 文本类型:支持TEXT、CSV等文本类型的数据格式。这些格式具有高性能的导入导出能力,并且支持指定分隔符、换行符、编码等参数。多种容错方式处理,以确保数据的完整性和准确性。
- 列存存储格式:列存存储格式是一种高效的存储和查询数据的方式。它支持多种压缩算法和编码方式,并且兼容多种引擎。使用列存存储格式,用户可以更快速地查询和分析数据。
- Parquet/ORC:Parquet和ORC是两种常用的列式存储格式,它们具有高效的压缩和编码能力,并且支持复杂类型的查询。将这两种格式的数据直接写出到数据湖中,实现融合查询和高效的数据处理。
- Hudi:Hudi是一个功能丰富的存储管理平台,它支持构建具有增量数据管道的流式数据湖。实现数据的实时同步和增量更新,提高数据处理的时效性和准确性。
7.使用示例
创建一个数据源连接,指定OBS服务器的相关参数。创建一个外部表,将OBS中的数据映射到该表中。像操作普通的数据库表一样来查询和分析这些数据了。
使用SELECT语句来查询外部表中的数据,或者使用INSERT语句来追加或覆盖写入数据。支持跨表的关联查询,以及单分区的覆盖写操作等。
DWS大数据湖仓一体在数据处理和分析方面的强大能力。能够支持多种数据格式和存储方式,还能够实现跨引擎的数据访问和高效查询。这使得用户能够更加灵活和高效地处理和分析海量数据,满足各种复杂的业务需求。
二、Hudi介绍
1.数据格式支持-Hudi介绍
Hudi是一个功能强大的存储管理平台,专为构建具有增量数据管道的流式数据湖而设计。它针对处理引擎和常规批处理进行了优化,也针对数据探索和BI场景的交互式分析能力进行了优化。
Hudi的核心能力包括元数据管理、数据加载、Upsert和Delete操作的支持,以及针对批量处理(如Hive、Spark)和流式处理(如Flink、Spark Streaming)的优化。它还支持交互式查询引擎,如HetuEngine。
Hudi提供了多种读取方式,包括镜像读、增量读和快速读。其存储模型主要有Merge On Read和Copy On Write两种。Hudi还具备索引、数据合并、多版本控制等核心特性,以及ACID事务的支持。
2.Hudi同步任务
Hudi同步任务实现了外表到内表的数据合并,并记录增量同步进度。它支持单表同步任务,通过列映射和Hudi增量commit time同步点来实现数据同步。智能调度框架,用于定时调用存储过程任务,并进行资源管控调度。
在使用Hudi同步任务时,创建DWS内表和DWS外表,然后设置同步提交Hudi进度同步任务。调用相应的SQL函数来设置同步状态、提交同步任务以及查询同步状态。
3.数据格式支持-Hudi查询方式介绍
Hudi外表查询支持两种表类型:COW(Copy On Write)和MOR(Merge On Read)。同时,它还支持两种查询视图:snapshot和incremental。
对于Hudi增量查询功能,我们可以通过设置增量查询参数来实现。这些参数包括消费模式、起始时间戳和结束时间戳等。设置好参数后,通过查询DWS外表来获取增量数据。
查询已经设置的增量参数是否正确,以及查询Hudi外表的属性,如OBS上的hoodie.properties文件。可以读取OBS上Hudi数据的最大时间线,也就是最新的提交记录。
三、元数据打通
1.从湖仓两层架构走向湖仓一体,统一元数据和权限
在传统的湖仓两层架构中,湖和仓的元数据是隔离的,这导致了在共享数据时仍需要进行ETL(提取、转换、加载)操作。湖和仓的权限也是隔离的,不支持统一的权限管理。这种架构不仅增加了数据处理的复杂性,还降低了数据共享的效率。
逐渐走向湖仓一体的架构。在湖仓一体的架构中,在存算分离的基础上,构建了一个统一的元数据层。这个统一元数据层使得上层服务能够便捷高效地共享数据,而无需再进行繁琐的ETL操作。对上层服务实现统一的高效的权限管理,解决了权限隔离的问题,使得不同用户能够按照权限规范地访问和操作数据。
2.元数据打通 - 统一元数据,简化数据共享
元数据打通是实现湖仓一体的关键一步。通过统一元数据,简化数据共享的过程,提高数据处理的效率。
以一个具体场景为例,假设DWS用户1创建了一个数据表T1,并向其中写入了数据。DWS用户2希望获取数据表T1的数据。在传统的湖仓两层架构中,用户2可能需要经过一系列的复杂操作才能获取到数据。但在湖仓一体的架构中,由于存在统一的元数据层,用户2只需要通过简单的查询操作即可获取到所需的数据。
统一元数据还使得跨平台、跨服务的数据共享变得更加容易。无论是MRS/DLI Cluster、Apache Flink还是其他数据处理平台,都可以通过统一元数据层来访问和操作数据。这不仅简化了数据共享的流程,还提高了数据处理的效率。
3.Lakeformation使用指导
满足一些前提条件才能使用Lakeformation。这些条件包括:有一个可用的Lakeformation实例,并且已经与MRS服务进行了对接;创建一个包含Lakeformation权限的委托,这个委托需要包含最小权限,保安全地访问数据。
讲解使用Lakeformation的步骤:
第一步,在GaussDB(DWS)管理控制台,单击“集群管理”。这是进入DWS集群管理的入口。
第二步,在集群列表中,单机指定集群的名称,然后选择“数据源->Lakeformation数据源”。这样就进入到了Lakeformation数据源的管理页面。
第三步,在Lakeformation数据源页面,单击“创建LakeFormation数据源连接”,并填写配置参数。这些参数包括数据源名称、LakeFormation实例、数据库、委托等。
数据源名称是为这次连接起的名字;
LakeFormation实例是之前创建的实例;
数据库是想要访问的Lakeformation中的数据库;
委托则是用于DWS系统通过委托token和Lakeformation交互以获取元数据的凭证。
创建完LakeFormation数据源连接后,通过创建external schema来访问存储在Lakeformation服务中MRS服务表的元数据,进而访问存储在OBS上的表数据了。创建external schema的语法如下:
CREATE EXTERNAL SCHEMA schema_name WITH SOURCE source_name DATABASE "database_name" SERVER server_name CATALOG catalog_name;
这里的参数说明如下:
- schema_name:外部模式名字,这是给这个外部模式起的名字。
- SOURCE:外部元数据存储引擎的类型,此处填写lakeformation。
- DATABASE:要访问的Lakeformation中的数据库的名称。
- SERVER:创建的Lakeformation数据源名称,也就是在第三步中创建的数据源连接名称。
- CATALOG:Lakeformation中对应的要访问的catalog名称,此处填写hive,因为数据通常存储在Hive catalog中。
创建完external schema后,通过它来查询存储在OBS上的表数据了。查询的语法如下:
SELECT * FROM ex_lf.test;
这里的ex_lf是之前创建的external schema的名称,test是要访问的Lakeformation服务的表名。需要注意的是,该表必须在角色授权中对当前用户授予了对应的select权限,否则无法查询该表的数据。
到了这里大家应该对DWS的胡融合技术有了一定的了解我希望大家能使用DWS进行实践操作才能真正的掌握,有什么不懂的可以在下面留言,华为社区的技术大佬很多总能帮助你解决问题。
本文参与华为云社区【内容共创】活动第26期,
任务15: GaussDB(DWS)湖仓融合技术解析
- 点赞
- 收藏
- 关注作者
评论(0)