阿里云数据湖构建DLF完整对接指南:从元数据管理到多引擎集成实践
1. 数据湖构建DLF概述
阿里云数据湖构建(Data Lake Formation,简称DLF)是一款全托管的统一元数据和数据存储及管理平台。它帮助用户快速构建云上数据湖,为云原生数据湖提供了统一的元数据管理、统一的权限与安全管理、便捷的数据入湖能力以及一键式数据探索能力。DLF与多个阿里云大数据计算引擎无缝对接,可以有效打破数据孤岛,帮助企业洞察业务价值。
DLF的核心价值体现在以下几个方面。首先是统一元数据管理,DLF提供跨引擎的全托管免运维元数据服务,支持可视化的元数据管理、多版本管理和回退、元数据全文检索等能力。其次是细粒度权限控制,支持按照数据目录、数据库、数据列、函数等资源进行权限点的可视化配置。第三是丰富的数据湖管理能力,包括数据生命周期管理、湖格式自动优化、存储分析等。最后是多引擎生态兼容,DLF可以无缝对接EMR、MaxCompute、Flink、Hologres等多种计算引擎。
在元数据模型上,DLF采用三层结构来组织数据:数据目录(Catalog)是顶层逻辑实体,用于不同业务或不同用户间的元数据隔离与权限管控;数据库(Database)是Catalog下的二级逻辑单元,用于组织数据表;数据表(Table)是实际存储数据元信息的最小单元。这种层级化结构清晰地反映了数据湖中的组织关系,便于管理和权限控制。
2. 开通DLF服务与基础配置
在使用DLF之前,需要先完成服务开通和账号授权。首次使用DLF时,需要完成阿里云账号的角色授权并开通DLF服务。具体操作步骤如下:
需要先登录阿里云控制台,点击:阿里云控制台
进入控制台后,在产品列表中找到数据湖构建(DLF)产品,按照指引完成开通。开通后,系统会自动进行服务角色的授权,确保DLF有权限访问OSS等底层存储服务。
对于RAM用户的权限管理,需要注意以下几点。管控API层面,RAM用户需要具备AliyunDLFFullAccess权限,或被授予Catalog相关的具体鉴权Action。数据层面,只有主账号或被赋予super_administrator或admin角色、或被授予Catalog管理权限的RAM用户,才具备创建Catalog的权限。开通DLF服务的RAM用户会被默认添加为当前地域的DLF超级管理员。如果RAM用户被授予AdministratorAccess系统策略,则相当于具备DLF超级管理员角色的权限。
3. Catalog管理
Catalog是DLF元数据管理的顶层实体,创建Catalog是使用DLF的第一步。在DLF控制台的元数据管理页面,点击新建Catalog,需要配置以下信息:Catalog名称(必选,唯一标识且不可重名)、描述信息(可选)、存储类型(标准存储)、存储冗余类型。
存储冗余类型有两种选择:本地冗余(默认)将数据存储在单可用区,当该可用区不可用时会导致数据不可访问;同城冗余则在同一地域内的多个可用区之间进行数据冗余,当某个可用区不可用时仍能保证数据可用性。对于数据高可用性要求较高的场景,推荐使用同城冗余,但价格相对更高。需要注意的是,Catalog创建后同城冗余不可变更为本地冗余。
Catalog创建完成后,可以在Catalog下创建数据库和数据表。如果已经在其他平台(如EMR、Flink等)上关联了Catalog,也可以在这些平台上创建数据库和表,元数据会直接写入DLF中。
4. EMR与DLF集成
EMR(E-MapReduce)是阿里云提供的大数据处理平台,与DLF的集成是数据湖方案中最常见的场景之一。通过EMR+DLF数据湖方案,企业可以获得数据湖内统一的元数据管理和权限管理,支持数据生命周期、湖格式自动优化、存储分析等多种管理能力。
4.1 创建使用DLF元数据的EMR集群
在创建EMR集群时,可以选择DLF作为元数据存储类型。具体配置如下:在EMR创建页面,业务场景选择数据湖;可选服务中至少需要选中Hive组件,其他组件根据业务需要选择;元数据选择DLF统一元数据;DLF数据目录选择默认的Catalog或者新建一个Catalog。如果尚未开通DLF,系统会提醒先开通DLF产品。
4.2 现有EMR集群切换DLF元数据
对于已创建的EMR集群,可以通过修改配置将元数据存储从MySQL切换为DLF。DLF统一元数据适配EMR的Hive 2.x、Hive 3.x、Presto和SparkSQL。仅EMR-3.30.0及之后版本和EMR-4.5.0及之后版本支持选择DLF统一元数据作为Hive数据库。
切换元数据存储类型的具体操作步骤如下:
- 进入EMR集群的Hive服务页面
- 在服务配置区域,搜索配置项hive.imetastoreclient.factory.class
- 将值修改为com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory
- 保存配置并重启Hive服务
切换为MySQL的配置值为org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory。
4.3 元数据迁移
DLF提供了可视化的元数据迁移功能,可以快速将Hive Metastore元数据迁移到DLF中。适用场景包括从其他大数据集群迁移到阿里云EMR新集群、从阿里云EMR集群(内置MySQL或自建RDS做元数据)整体迁移到EMR新集群等。元数据迁移需要EMR主版本满足3系列>=EMR 3.33、4系列>=EMR 4.6或5系列>=EMR 5.1的条件。
迁移前需要检查数据库远程访问权限,可以通过执行SQL语句进行授权:
CREATE USER 'root'@'%' IDENTIFIED BY 'xxxx';
GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;如果是RDS数据库,也可以在RDS控制台上查看和修改访问权限。迁移任务的创建和运行均在DLF控制台中完成,支持任务状态查看和运行日志查询。
5. Flink与DLF集成
实时计算Flink版与DLF的集成是实现实时数据入湖的核心方案。Flink任务可以利用数据湖统一存储的优势,使用Hudi或Iceberg结果表将作业结果输出到数据湖中。通过设置DLF Catalog,Flink可以将表的元数据同步到DLF中,实现写入的数据湖表无缝对接EMR、MaxCompute、Hologres等计算引擎。
5.1 前提条件
使用Flink+DLF方案需要满足以下前提条件:已开通阿里云实时计算Flink版并创建Flink全托管工作空间;已开通DLF服务;如果使用MySQL数据源,需要创建RDS MySQL实例,且与Flink在同一地域同一VPC内,RDS MySQL须为5.7及以上版本。
5.2 创建DLF Catalog
在Flink控制台中创建DLF Catalog的步骤如下:进入Flink全托管页签,单击目标工作空间操作列下的控制台;在左侧导航栏单击元数据管理;单击创建Catalog,选择DLF,填写参数配置信息后确定。创建成功后,可在元数据管理中看到新增的DLF数据目录,默认链接的是DLF的default数据目录。
5.3 Flink入湖作业示例
以下是一个使用Flink CDC将MySQL数据同步到DLF Paimon表的YAML作业配置示例:
source:
type: mysql
hostname: your-mysql-host
port: 3306
username: your-username
password: your-password
database-name: testdb
table-name: student
server-id: 5401
scan.startup.mode: initial
sink:
type: paimon
catalog:
type: dlf
metastore: dlf
catalog-name: your-dlf-catalog
warehouse: oss://your-bucket/warehouse
table-name: student_sink
pipeline:
parallelism: 4基于Flink创建Paimon DLF Catalog后,可以读取MySQL CDC业务数据写入DLF,进而使用MaxCompute的外部项目进行数据湖联邦查询分析。这种架构实现了流批一体的LakeHouse架构:利用实时计算Flink版构建流式作业,消费Kafka中的数据并实时写入DLF的Paimon表构建实时ODS明细层;再通过Flink批处理作业对ODS层数据进行清洗、聚合与建模,构建离线DWD明细层。
写入DLF的Paimon表可以通过DLF提供的统一元数据能力,无缝对接多种计算引擎进行分析查询。例如,可以使用StarRocks创建外部Catalog直连DLF中的Paimon表,实现对湖内数据的高效探查与分析。
6. DataWorks与DLF集成
DataWorks是阿里云的数据开发治理平台,其数据集成模块支持将数据同步至DLF。Data Lake Formation数据源仅支持在数据集成使用,且仅支持Serverless资源组。
6.1 创建DLF数据源
在DataWorks中创建DLF数据源的步骤如下:登录DataWorks控制台,进入工作空间管理中心;单击左侧导航栏的数据源,进入数据源页面;单击新增数据源,搜索并选择DLF来创建数据源。配置参数包括:数据源名称(工作空间内唯一,以字母、数字、下划线组合且不能以数字和下划线开头)、配置模式(仅支持阿里云实例模式)、Endpoint(下拉选择DLF引擎实例的Endpoint地址)、访问身份(可选择阿里云主账号、RAM子账号或RAM角色)。
如果访问身份选择了RAM子账号或RAM角色,需要在RAM访问控制中将系统策略AliyunDataWorksDIAccessDLF授权给该子账号或角色。同时,需要在DLF控制台授予角色或子账号待同步数据表的Data Editor权限。配置完成后,需要测试数据源与Serverless资源组的连通性,确保可连通后即可完成创建。
6.2 脚本模式配置
在配置离线任务时,可以使用脚本模式进行配置。以下是一个Reader脚本的示例:
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "dlf",
"parameter": {
"datasource": "your_dlf_datasource",
"table": "your_table",
"column": ["id", "col1", "col2", "col3"],
"tableType": "table",
"where": "id > 1"
},
"name": "Reader"
}
]
}DataWorks数据集成还支持Hive整库离线同步至DLF,以及MySQL整库实时同步至OSS-HDFS数据湖。用户可以根据数据源和同步类型,选择使用Flink CDC或DataWorks数据集成等工具将原始数据同步到数据湖中。
7. MaxCompute与DLF集成
MaxCompute、DLF和OSS构成了阿里云湖仓一体的核心解决方案,可以实现数据湖查询和湖数据入仓。通过配置DLF,将数据从OSS导入到MaxCompute中,并使用MaxCompute进行数据湖查询。
7.1 前提条件
使用MaxCompute+DLF+OSS方案需要满足以下条件:已开通OSS服务并准备测试数据;已开通DLF服务并导入OSS测试数据;已创建MaxCompute项目;已创建DataWorks工作空间并绑定MaxCompute数据源。需要注意的是,仅华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡和德国(法兰克福)地域支持构建湖仓一体能力。MaxCompute、OSS和DLF必须部署在同一地域。
7.2 权限授予
操作MaxCompute项目的账号未经授权无法访问DLF和OSS服务,需要执行授权操作。授权方式包括一键授权(当创建MaxCompute项目的账号和部署DLF的账号相同时,推荐直接单击授权DLF)和自定义授权两种。
在DLF中创建元数据库后,可以创建元数据抽取任务导入OSS测试数据。通过MaxCompute的external schema可以进行数据湖联邦查询。DLF的Paimon表有新数据写入时,OpenSearch等引擎可以基于新数据自动触发实时索引构建。
8. Hologres与DLF集成
Hologres自V3.2版本开始,支持通过Paimon REST访问DLF Catalog数据。Hologres自V3.0版本开始,支持在DLF 2.0数据源(Paimon)的EXTERNAL SCHEMA下创建EXTERNAL TABLE,实现与数据湖数据的无缝互通。在此基础上,Hologres从4.0版本开始支持External Dynamic Table,通过External的能力在Paimon自动创建表,通过Dynamic Table的能力自动增量加工数据。Hologres还支持通过外部数据源加载DLF数据湖上的数据,通过自研HQE引擎实现Paimon、Hudi、Delta Lake等湖上数据的高性能读写。
9. DLF OpenAPI与SDK使用
DLF的OpenAPI采用ROA签名风格。阿里云已经为开发者封装了常见编程语言的SDK,开发者可以通过下载SDK直接调用OpenAPI而无需关心技术细节。
以下是一个使用阿里云V2 Python SDK调用DLF API的示例:
from alibabacloud_credentials.client import Client as CredentialsClient
from alibabacloud_dlf20250310.client import Client as DlfClient
from alibabacloud_dlf20250310.models import CreateRoleRequest
from alibabacloud_tea_openapi.models import Config
# 初始化凭证客户端
credentials_client = CredentialsClient()
# 创建DLF客户端配置
config = Config()
config.credential = credentials_client
config.endpoint = 'dlf.cn-hangzhou.aliyuncs.com'
# 初始化DLF客户端
client = DlfClient(config)
# 调用CreateRole API
request = CreateRoleRequest()
request.role_name = 'test_role'
response = client.create_role(request)
print(response)如果现有SDK不能满足使用需求,开发者也可以直接基于ROA签名规范自行封装HTTP请求调用OpenAPI。
10. 权限管理与安全
DLF提供了完善的权限管理体系。访问DLF需要为RAM用户或角色赋予RAM API相关的权限策略。DLF内部资源的访问和使用权限控制包括数据库、数据表、数据列、函数、数据目录等。
DLF的角色体系包括以下几种:super_administrator(超级管理员,开通DLF服务的RAM用户会被自动赋予此角色)、admin(管理员,具备所有数据权限及授权权限,以及添加自建角色、新建Catalog的权限)。数据管理员可以将admin或super_administrator等角色由主账号授予给RAM用户,让对应的RAM用户进行授权管理。
在权限配置方面,DLF支持按照数据目录、数据库、数据列、函数等资源的细粒度权限点进行可视化配置。
11. 数据湖管理与优化
DLF提供了丰富的数据湖管理能力。在数据生命周期管理方面,支持多种维度的自动化管理,可以对数据按照冷热、更新时间等自动化归档,有效节省存储成本。在湖格式优化方面,支持针对Delta数据湖格式的自动化存储优化策略。在元数据分析方面,支持元数据DataProfile,包括文件大小、行数、访问频次、小文件数量、文件冷热度、有效文件数等维度的统计分析。
通过DLF的这些管理能力,企业可以更好地运维数据湖,降低存储成本,提升数据访问效率。
12. 总结
阿里云数据湖构建DLF作为全托管的统一元数据管理平台,为云原生数据湖建设提供了核心基础设施。通过本文的介绍,可以清晰地看到DLF在元数据管理、权限控制、数据入湖、多引擎集成等方面的完整能力矩阵。无论是与EMR的大数据计算集成、与Flink的实时入湖集成、与DataWorks的数据集成集成,还是与MaxCompute的湖仓一体集成、与Hologres的实时数仓集成,DLF都提供了标准化的对接方式和完善的API支持。
企业在构建数据湖时,可以以DLF为元数据管理中心,OSS为统一存储层,根据业务需求灵活选择EMR、Flink、MaxCompute、Hologres等计算引擎,形成统一元数据、统一存储、多样计算的现代化数据架构。这种架构不仅能够打破数据孤岛,还能通过DLF的生命周期管理和存储优化能力有效控制成本,是云原生数据湖建设的理想选择。
常见问题问答
问1:DLF与EMR集成时,对EMR版本有什么要求?
答:DLF统一元数据适配EMR的Hive 2.x、Hive 3.x、Presto和SparkSQL。仅EMR-3.30.0及之后版本和EMR-4.5.0及之后版本支持选择DLF统一元数据作为Hive数据库。元数据迁移场景需要EMR主版本满足3系列>=EMR 3.33、4系列>=EMR 4.6或5系列>=EMR 5.1的条件。
问2:Flink如何将元数据同步到DLF?
答:Flink可以通过创建DLF Catalog将表的元数据同步到DLF中。在Flink控制台的元数据管理页面,单击创建Catalog并选择DLF,填写参数配置后即可完成创建。创建成功后,Flink作业写入的数据表元数据会自动同步到DLF。
问3:DLF支持哪些计算引擎的对接?
答:DLF支持与多种阿里云大数据计算引擎无缝对接,包括EMR(Spark、Hive、Presto、Impala)、MaxCompute、实时计算Flink版、Hologres等。
问4:DataWorks数据集成同步至DLF有什么限制?
答:Data Lake Formation数据源仅支持在数据集成使用,且仅支持Serverless资源组。配置数据源时访问身份可选择主账号、RAM子账号或RAM角色,若选择子账号或角色需要授予相应的RAM权限和DLF数据权限。
问5:DLF中Catalog的存储冗余类型如何选择?
答:Catalog支持本地冗余和同城冗余两种存储冗余类型。本地冗余数据存储在单可用区,当该可用区不可用时会导致数据不可访问;同城冗余在同一地域内多可用区进行数据冗余,提供更高的数据可用性但价格更高。对高可用性要求较高的场景推荐使用同城冗余。需要注意的是,Catalog创建后同城冗余不可变更为本地冗余。
问6:DLF的OpenAPI使用什么签名风格?
答:DLF的OpenAPI采用ROA签名风格。阿里云已经为开发者封装了常见编程语言的SDK,可以直接下载使用。如果现有SDK不能满足需求,也可以基于ROA签名规范自行封装HTTP请求。



