湖存储

更新时间:
复制 MD 格式

AnalyticDB for MySQL提供湖存储功能,简化数据湖的构建和存储管理。湖存储支持存储Iceberg、Paimon等类型的结构化表数据和非结构化文件对象,主要适用于需同时满足离线批处理和实时分析的场景。本文介绍湖存储的存储模式、存储类型及资源管理操作。

前提条件

集群的产品系列为企业版、基础版或湖仓版。

开通湖存储

湖存储功能当前处于邀测阶段,如需开通,请提交工单联系技术支持。

存储模式

在创建数据湖表前,您需要决定数据的存储位置。AnalyticDB for MySQL提供两种存储模式,在建表时一次性确定,建表后不可变更。

维度

托管湖存储(内湖)

用户自有OSS(外湖)

存储管理

AnalyticDB for MySQL全托管,自动管理底层存储桶

用户自行管理OSS Bucket

建表关键参数

catalog_type='ADB' + adb_lake_bucket(XIHE SQL);或TBLPROPERTIES ('adb_lake_bucket' = '...') + SET spark.adb.lakehouse.enabled=true(Spark SQL)

LOCATION 'oss://...'

开通方式

需先开通湖存储

同账号下无需额外操作

适用场景

新项目,希望简化运维

已有OSS数据,或需要自主管理存储

  • 托管湖存储:数据由AnalyticDB for MySQL自动管理底层存储桶,用户通过标准SQL读写湖表,无需关心文件系统、权限配置或生命周期管理。详情请参见新建湖存储

  • 用户自有OSS:数据完全存放在用户指定的同地域OSS Bucket中,建表时通过LOCATION指定OSS路径即可。

说明

具体建表语法因引擎而异,请参见后续步骤中对应引擎的读写文档。

存储类型

AnalyticDB for MySQL托管湖存储提供两种湖存储类型,您可以根据业务场景选择合适的存储方案。

维度

基础型

标准型

底层存储

OSS对象存储

AFS(AnalyticDB Filesystem)高性能对象存储

访问协议

OSS API

S3兼容协议,额外支持POSIX接口(邀测中)

适用场景

通用数据分析、离线批处理

AI/ML训练推理、高性能计算、多模数据处理

性能特点

标准吞吐与延迟

高吞吐、低延迟,内置多级缓存

冷热分层

不支持

支持,热数据存储在AFS,冷数据自动下沉至OSS

开通方式

提交工单

提交工单

基础型(OSS标准湖存储)

OSS标准湖存储基于阿里云OSS对象存储,适用于大多数通用数据分析和离线批处理场景。创建后,系统会自动在服务账号下的OSS中创建一个与集群同地域、且与湖存储同名的Bucket。

标准型(AFS高性能湖存储)

AFS(AnalyticDB Filesystem)是兼容S3协议的高性能对象存储,为AnalyticDB for MySQL湖存储提供高性能数据入湖与持久化能力。AFS适用于对存储性能有更高要求的场景,例如AI/ML训练推理、大规模多模数据处理等。

核心能力:

  • S3协议兼容:可直接使用AWS SDK、Spark/Flink S3A等标准工具链访问,无需改造现有工具。

  • POSIX接口(邀测中):同一份数据既可通过S3接口访问,也可通过POSIX挂载访问,覆盖训练、推理等依赖文件路径的场景。

  • 冷热分层:热数据存储在AFS中保障高性能访问,冷数据自动下沉至OSS,统一命名空间对上层应用透明,实现成本与性能的平衡。

  • 安全与权限:支持基于S3 Policy的细粒度权限模型,可按Bucket、路径、操作类型进行最小授权;支持用户与AccessKey体系,便于多团队隔离。

POSIX接口

AI/ML训练和推理链路通常依赖POSIX文件路径(而非S3 Key)。AFSS3接口之上额外提供了POSIX接口,主要价值如下:

  • 训练/推理零改造:Ray算子、模型checkpoint可直接读写挂载点,无需修改为S3 SDK。

  • 同一份数据双形态访问:上游生产管线通过S3写入,下游训练或检索通过POSIX接口直读,零拷贝、零搬运。

重要

当前POSIX接口能力处于邀测阶段,如需使用请提交工单

费用说明

注意事项

  • 一个阿里云账号在同一地域内最多可创建5个湖存储。

  • 湖存储的存储用量显示存在延迟,因此无法在数据写入后立即查看到数据量。

  • 删除湖存储时,需要确保已删除该湖存储中的所有数据,否则删除湖存储操作会报错。

  • 创建湖存储后,AnalyticDB for MySQL会自动在其服务账号下的OSS中,创建一个和AnalyticDB for MySQL集群同地域、且与湖存储同名的Bucket。您可以通过添加收藏路径的方式,在自己阿里云账号下的OSS中查看该Bucket。

    点击查看OSS Bucket的方法

    1. 登录OSS管理控制台

    2. 在左侧导航栏单击我的收藏路径后面的添加按钮。

    3. 添加收藏路径对话框中选择添加方式,并填写地域以及Bucket 名称

      添加方式:固定选择为从其他已授权bucket添加

      地域AnalyticDB for MySQL集群所属地域。

      Bucket:填写湖存储名称

  • AnalyticDB for MySQL备份恢复功能不支持湖存储中的数据。

新建湖存储

标准型

标准型湖存储基于AFS高性能对象存储。创建标准型湖存储前,您需要先创建存储集群,再创建湖存储。

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。

  2. 在左侧导航栏单击数据管理 > 湖存储管理

  3. 单击存储集群管理页签。

  4. 单击新建集群

  5. 在弹出的创建集群对话框中,存储类型固定为标准型,设置预留资源大小,(可选)填写集群描述,然后单击确定

    说明

    存储集群创建需要一定时间,请等待集群创建完成后,再进行后续操作。

  6. 单击Bucket管理页签。

  7. 单击新建Bucket

  8. 在弹出的新建Bucket对话框中,设置以下参数,然后单击确定

    • 类型:选择标准型

    • 所属集群:选择上一步创建的存储集群。

    • Bucket名称:输入Bucket名称。Bucket名称必须全局唯一,创建后无法修改。

    • 数据冗余类型:选择同城冗余本地冗余

    • Bucket描述:(可选)输入Bucket描述,用于区分不同业务场景下的湖存储。

基础型

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。

  2. 在左侧导航栏单击数据管理 > 湖存储管理

  3. Bucket管理页签下,单击新建Bucket

  4. 在弹出的新建Bucket对话框中,设置以下参数,然后单击确定

    • 类型:选择基础型

    • Bucket名称:系统自动生成,无需填写。

    • Bucket描述:(可选)输入Bucket描述,用于区分不同业务场景下的湖存储。

    • 数据冗余类型:选择同城冗余本地冗余

    重要

    Bucket名称为系统自动生成,格式为adb-lake-地域ID-任意字符串。Bucket名称全局唯一,创建后无法修改。

  5. (可选)修改Bucket描述。

    Bucket名称由系统自动生成,且不能修改。建议修改Bucket描述,以区分不同业务场景下的湖存储。

    1. 单击目标Bucket描述列的image按钮。

    2. 在弹出的修改Bucket描述对话框中输入描述信息,然后单击确定

  6. (可选)新增授权。

    单击操作列的新增授权,可选择授权对象类型:RAM用户或RAM角色。

    说明
    • 只读权限:允许用户查看湖存储数据,但不可修改或删除。

    • 读写权限:允许用户进行数据读取、写入和修改操作。

    • 仅主账号或具有相应权限的RAM用户可执行授权操作。

    • 权限变更实时生效,建议操作前确认授权范围。

查看连接地址

标准型湖存储创建完成后,您可在控制台查看兼容 S3 协议的连接地址(Endpoint)。

重要
  • 该 Endpoint 为私网连接地址,仅支持阿里云同 VPC 内访问,请确保您的 AWS SDK、Spark/Flink S3A 等工具部署在同 VPC 环境下,即可直接使用该地址访问 AFS 湖存储。

  • 基础型湖存储不支持S3协议,Endpoint列显示为"-"。

  1. 在左侧导航栏单击数据管理 > 湖存储管理

  2. Bucket管理页签下,查看标准型BucketEndpoint列,即为S3连接地址。

查询湖存储数据量

  1. 在左侧导航栏单击数据管理 > 湖存储管理

  2. 在目标湖存储的存储用量中查看数据量。

    重要

    湖存储的存储用量显示存在延迟,因此无法在数据写入后立即查看到数据量。

删除湖存储

  1. 在左侧导航栏单击数据管理 > 湖存储管理

  2. 单击目标湖存储操作列的删除

  3. 在弹出的删除对话框中单击确定

    重要

    删除湖存储时,需要确保已删除该湖存储中的所有数据,否则删除湖存储操作会报错。

后续步骤

设置默认表格式(仅Spark SQL)

重要

该功能仅适用于Spark SQL引擎。

您可以通过数据库属性设置默认的表格式,使该数据库下新建的表自动采用指定格式,无需每次建表时单独声明。

  1. Spark Job资源组、Interactive资源组或提交的作业中,设置如下参数:

    spark.sql.adb.sources.extractProviderFromDBProperties.enabled true
  2. 创建数据库时,通过DBPROPERTIES指定'storage.format'为以下格式之一:deltaicebergparquetorc。示例如下:

    CREATE DATABASE IF NOT EXISTS db_storage_format 
    LOCATION 'oss://path/to/db/' 
    WITH DBPROPERTIES ('storage.format'='delta');

    执行以上语句后,在db_storage_format库下创建的表默认为delta类型。如您建表时通过using ${tableFormat}显式指定表类型,则优先以显式指定的表类型为准。

数据湖表操作

按您选择的引擎和湖格式,参见对应文档完成建表与读写操作: