华为云湖仓构建LakeFormation对接使用全攻略:从零搭建企业级数据湖
一、LakeFormation服务概述
湖仓构建(DataArts Lake Formation,简称LakeFormation)是华为云推出的企业级数据湖一站式构建服务。在存算分离架构基础上,LakeFormation提供数据湖元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型。该服务支持对接MapReduce服务(MRS)、数据仓库服务(DWS)、数据湖探索(DLI)、AI开发平台ModelArts、数据治理中心DataArts Studio等多种计算引擎及大数据云服务。
LakeFormation通过底层资源实现跨AZ部署及高可靠、弹性伸缩、元数据统一管理、元数据与文件目录联动授权、对接多计算引擎等功能,是一个Serverless服务。其核心功能包括元数据管理、数据权限管理、控制台和API。元数据基于Hive元数据模型,支持Catalog、数据库、表、函数等元数据对象。数据权限管理提供权限策略的配置和对应的权限访问控制。
在传统数据湖建设模式中,企业常常面临诸多痛点:仅支持通过计算引擎(Hive、Spark等)执行SQL实现元数据的定义、修改、查询,对用户有一定的技能要求,缺少提升易用性的可视化界面;一个完整的授权活动需要针对计算引擎、对象存储执行两次授权操作,对用户操作带来不便,易用性差。LakeFormation通过一站式可视化湖仓构建、联动授权和细粒度访问控制三大优势,有效解决了这些问题。
LakeFormation支持亿级超大规模元数据管理,百万级细粒度数据权限管理,具备高并发、低时延的特性。
二、准备工作
在使用LakeFormation之前,需要进行一系列准备工作。
2.1 注册华为云账号并实名认证
在创建LakeFormation实例之前,请先注册华为账号并开通华为云,进行实名认证。如果您已开通华为云并进行实名认证,请忽略此步骤。
2.2 配置云服务授权
在使用LakeFormation之前,您需要注册华为云账号并进行云服务授权操作。登录LakeFormation管理控制台,在服务授权页面勾选同意LakeFormation服务声明,单击同意授权完成服务授权。
2.3 配置IAM用户权限
您可以根据需要配置IAM用户的权限进行精细的权限管理。如果需要对LakeFormation服务进行精细的权限管理,可以使用统一身份认证服务(IAM)。根据企业的业务组织,在账号中给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并使用云服务资源。
LakeFormation FullAccess是LakeFormation管理员权限,拥有该权限的用户可以操作并使用所有LakeFormation服务功能。该权限涉及IAM AgencyFullAccess、OBS OperateAccess、VPC FullAccess、VPCEndpoint FullAccess等依赖权限。
已准备具有创建LakeFormation实例权限的IAM用户。已在IAM服务中创建用于授权的IAM业务用户、用户组,用户已关联至用户组。
2.4 准备OBS存储路径
LakeFormation元数据映射的数据文件和目录存储在OBS中。在创建LakeFormation元数据之前,需要提前创建数据存储使用的OBS对象桶或OBS并行文件系统。已在OBS服务中创建一个并行文件系统,并在文件系统中创建用于映射数据表的文件夹。
已创建对接LakeFormation所需的相关委托。例如,如果执行MRS对接LakeFormation,则需要创建相关委托。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
三、创建LakeFormation实例
在使用LakeFormation时,您首先需要创建一个实例,后续的操作,如管理元数据、设置元数据权限等,都是基于您创建的实例进行的。
3.1 进入控制台
登录华为云管理控制台,在左上角单击菜单按钮,选择大数据 > 湖仓构建LakeFormation进入LakeFormation控制台。
3.2 购买实例
单击页面右上角立即购买或购买实例,进入购买实例页面。首次创建实例时界面显示立即购买,如果界面已有LakeFormation实例则显示为购买实例。
创建LakeFormation实例需要配置以下参数:
- 类型:选择实例类型,包括共享型和独享型
- 区域:不同区域的云服务产品之间内网互不相通,请就近选择靠近您业务的区域
- 计费模式:按需收费
- 项目:选择实例所属的项目
- 名称:自定义LakeFormation实例名称
- QPS:每秒最大请求数,共享型无需配置
- 企业项目:选择集群所属的企业项目
- 描述:当前实例的描述信息
- 标签:在标签键/值输入框输入内容后单击添加即可添加标签
单击立即购买,确认配置的相关信息并支付。单击返回控制台,在控制台即可查看新创建的LakeFormation实例信息。创建实例时需要注意配额提醒,当资源配额不足时,建议按照界面提示申请足够的资源,再创建实例。等待实例状态变为运行中表示实例已创建成功。
四、规划数据湖元数据
LakeFormation提供Catalog、数据库、数据表等的创建、修改、查看、删除等功能,并支持配置元数据生命周期。通过集中式的统一管理帮助您便捷地进行数据湖初始化构建及持续运营,有效解决元数据分散管理问题。
4.1 创建元数据存储路径
LakeFormation元数据映射的数据文件和目录存储在OBS中。在创建LakeFormation元数据之前,需要提前创建数据存储使用的OBS对象桶或OBS并行文件系统。
4.2 创建Catalog
Catalog是LakeFormation中最顶层的元数据容器。用户可以对LakeFormation Catalog进行查看、修改、授权、查看Catalog下数据库、删除等操作。
创建Catalog的步骤如下:
- 在左侧下拉框中选择待操作的LakeFormation实例
- 在左侧导航栏选择元数据 > Catalog
- 单击创建Catalog
- 配置Catalog名称(MRS对接场景下必须为hive)
- 选择位置:单击选择Catalog对应的OBS存储路径
- 其他参数根据实际需要进行配置
- 单击提交
MRS对接LakeFormation仅支持对接LakeFormation实例的数据目录名称为hive的Catalog。
4.3 创建数据库
在Catalog下可以创建数据库。创建数据库的步骤如下:
- 在左侧导航栏选择元数据 > 数据库
- 单击创建数据库
- 库名称:MRS对接场景下必须为default
- 所属Catalog:选择对应的Catalog
- 选择位置:选择Catalog存储路径下的位置
- 其他参数根据实际需要进行配置
- 单击提交
4.4 创建数据表
在数据库下可以创建数据表。创建数据表时需要指定表名、列信息、存储格式、存储位置等参数。
五、配置元数据权限
LakeFormation支持配置数据库、数据表、函数等维度的权限,云服务管理员可针对不同的管理对象配置不同的权限,统一对数据湖资源进行管理。对于IAM用户/用户组,也可以通过关联LakeFormation服务的细粒度权限策略进行特性权限场景的授权。当湖内数据资源较多时,建议通过LakeFormation管理控制台对数据湖内的资源进行统一权限管理。
5.1 权限要素
LakeFormation配置权限时需要包含如下要素:
- 授权主体:被授予权限的对象,使其具备针对某数据资源的指定访问权限的用户组、角色、IAM用户、委托用户等身份。授权主体名称中不能包含中划线(-),否则可能造成操作失败
- 授权类型:数据目录(Catalog)、数据库(Database)、数据表(Table)、数据列(Column)、函数(Function)、OBS路径
- 操作类型:主体对授权类型的访问权限
- 赋予授权权限:是否赋予授权权限,赋予授权权限后,授权主体便可以将权限授权给其他授权主体
5.2 各授权类型的操作权限
不同授权类型支持的操作类型各不相同:
- Catalog:ALL(所有操作)、ALTER(修改)、CREATE_DATABASE(创建数据库)、DROP(删除)、DESCRIBE(查看元数据信息或切换)、LIST_DATABASE(查看资源列表)
- 数据库:ALL、ALTER、DROP、DESCRIBE、LIST_TABLE、LIST_FUNC、CREATE_TABLE、CREATE_FUNC
- 表:ALL、ALTER、DROP、DESCRIBE、UPDATE(更新数据)、INSERT(插入数据)、SELECT(查询数据)、DELETE(删除数据)
- 列:SELECT(查询列数据)
- 函数:ALL、ALTER、DROP、DESCRIBE、EXEC(执行)
- 路径:READ(读权限)、WRITE(写权限)
5.3 权限管理员体系
权限管理员通常分为系统权限管理员与业务权限管理员:
- 系统权限管理员:需要拥有lakeformation:policy:describe、lakeformation:policy:create、lakeformation:policy:drop等IAM操作权限。权限管理范围:可将任意元数据权限授予给其他授权主体,可撤销任意元数据权限
- 业务权限管理员:需要拥有lakeformation:policy:describe、lakeformation:policy:delegate等IAM操作权限。权限管理范围:需要被业务管理员赋予授权权限,才能将元数据权限授予其他授权主体,或撤销元数据权限
例如:系统中存在系统权限管理员User A、业务权限管理员User B、普通用户User C。User A将Catalog1的ALL权限授予User B并同时赋予授权权限后,User B可将Catalog1的DESC等权限授予User C。但User B无法将其他Catalog的权限授予User C。
5.4 为元数据授权
在LakeFormation管理控制台为元数据授权的步骤如下:
- 在左侧下拉框中选择待操作的LakeFormation实例
- 在左侧导航栏选择元数据 > Catalog(或数据库/表)
- 查找待操作的元数据对象
- 在操作列中选择授权或查看权限后单击授权
- 配置待授权主体类型、授权主体对象、操作类型等
- 单击确定完成授权
LakeFormation服务通过统一管理元数据与细粒度权限,使用户能够轻松实现跨集群数据共享。
六、创建接入客户端
通过创建接入客户端,用于其他云服务接入LakeFormation实例。同一个实例下默认最多创建20个接入客户端。
创建接入客户端的步骤如下:
- 登录管理控制台
- 选择大数据 > 湖仓构建LakeFormation进入LakeFormation控制台
- 在左侧下拉框中选择已创建的LakeFormation实例
- 在左侧导航栏选择接入管理
- 单击创建客户端
- 配置以下参数:
- 客户端名称:自定义接入客户端的名称
- 虚拟私有云:选择为待对接服务所在的虚拟私有云
- 所属子网:选择为待对接服务所在的子网
- 单击确定
客户端创建完成后,在客户端详情信息中获取对应客户端的接入IP信息并记录。
七、对接MRS服务
MRS集群和LakeFormation实例必须同在一个云账户下且属于同一个Region。LakeFormation侧创建的接入客户端所在虚拟私有云,必须与MRS集群在同一虚拟私有云下。MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。
7.1 对接前准备
MRS对接LakeFormation前需要完成以下准备工作:
- 创建LakeFormation实例:参考创建LakeFormation实例章节完成实例创建
- 创建名称为hive的Catalog:如果实例中已存在则跳过
- 创建名称为default的数据库:如果实例中已存在则跳过
- 配置元数据权限:在数据权限 > 数据授权页面,根据业务需求对hive Catalog进行基于用户、用户组的授权
- 创建接入客户端:虚拟私有云和所属子网需要与待对接的MRS集群保持一致
MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。
7.2 创建对接OBS权限的委托
创建对接OBS权限的委托的步骤如下:
- 登录华为云管理控制台,选择统一身份认证服务
- 在左侧导航栏选择委托,单击创建委托
- 配置委托参数:
- 委托名称:例如visit_obs_agency
- 委托类型:选择普通账号
- 委托的账号:输入被委托的华为云账号名称
- 持续时间:根据实际情况自定义
- 在选择策略界面单击新建策略
- 配置策略信息:
- 策略名称:例如dev_visit_obs
- 策略配置方式:JSON视图
- 填入策略内容
7.3 配置MRS集群级操作权限
在LakeFormation管理控制台配置MRS集群级操作权限的步骤如下:
- 登录LakeFormation管理控制台
- 在左侧下拉框中选择待操作的LakeFormation实例
- 选择数据权限 > 数据授权
- 单击数据授权,根据实际需要进行数据库级别授权
- 单击确定
集群的虚拟私有云与LakeFormation数据连接保持一致。集群需包含Hadoop、Ranger、Hive、Guardian、Spark(可选)、Flink(可选)等组件。如果集群配置LakeFormation数据连接后再添加Spark组件,Spark配置对接LakeFormation只需要在数据连接中选择解绑Hive的LakeFormation数据连接,然后重新配置即可。
八、对接DLI服务
DLI管理控制台默认提供DLI数据目录,您还可以在DLI管理控制台创建到LakeFormation Catalog的连接。
8.1 对接前准备
在DLI创建到LakeFormation Catalog的连接前,请先确保在LakeFormation管理控制台已创建数据目录。DLI只能连接到默认的LakeFormation实例。需要在LakeFormation中将实例设置为默认实例以确保连接成功。
8.2 对接步骤
DLI对接LakeFormation的步骤如下:
- 在LakeFormation管理控制台创建用于元数据存储的LakeFormation实例
- 在LakeFormation管理控制台创建Catalog
- 在DLI管理控制台创建数据目录
在DLI管理控制台创建到LakeFormation Catalog的连接,创建完成后即可在DLI管理控制台的数据目录下显示LakeFormation Catalog。
在Spark和SQL作业场景中,可以通过连接LakeFormation实现统一的元数据管理。目前DLI对接LakeFormation功能处于受限使用阶段,您需提交工单申请开通该功能,开通后才可在DLI管理控制台的SQL编辑器页面查看数据目录。
九、对接DataArts Studio
LakeFormation支持对接数据治理中心DataArts Studio。在DataArts Studio中创建Hive数据连接时,如果希望Hive与LakeFormation对接,需要在OBS存储支持选项中选择是并设置OBS AK/SK。
已开通DataArts Studio服务,并创建了DataArts Studio实例及工作空间是使用DataArts Studio对接LakeFormation的前提。
十、元数据迁移
用户可以通过迁移外部元数据至LakeFormation,并将数据存储在OBS中,实现元数据的统一管理、数据的集中存储和全生命周期管理。
10.1 迁移元数据
迁移元数据至LakeFormation的步骤如下:
- 登录LakeFormation管理控制台
- 在左侧下拉框中选择待操作的LakeFormation实例
- 在左侧导航栏选择任务管理 > 任务授权
- 在左侧导航栏选择任务管理 > 元数据迁移
- 配置元数据迁移任务
10.2 迁移权限
用户在完成元数据迁移后,可以将对应元数据的权限迁移至LakeFormation。迁移成功后为元数据绑定的默认Owner将会拥有元数据的操作权限,从而保证用户在元数据迁移前后,数据访问控制策略的连续性与一致性。
迁移元数据及权限的整体流程为:先将外部元数据迁移至LakeFormation实现元数据的统一管理,再将已迁移元数据的权限迁移至LakeFormation,保证用户在元数据迁移前后数据访问控制策略的连续性与一致性。
十一、API与SDK开发
LakeFormation提供了REST风格API,支持您通过HTTPS请求调用。同时LakeFormation还提供多种编程语言的SDK供您使用。
11.1 API调用
LakeFormation支持使用API方式进行实例、元数据数据库、元数据表等操作。API调用方法请参见如何调用API。您可以在API Explorer中调试接口,支持自动认证鉴权,API Explorer可以自动生成SDK代码示例并提供调试功能。
LakeFormation API层提供兼容Hive社区的元数据接口,以及兼容Ranger社区的权限同步接口,以便与MRS、DWS等服务集成对接。
11.2 Java SDK开发
在进行LakeFormation Java SDK开发程序前,需要准备以下开发环境:
- 已安装Java环境,Java版本要求使用JDK 1.8或更高版本
- 参考Maven SDK地址,在Maven仓库中查看LakeFormation Java SDK最新版本Jar包
以下是一个使用Java SDK操作LakeFormation的示例代码:
// 引入LakeFormation Java SDK依赖
// Maven依赖配置
// <dependency>
// <groupId>com.huaweicloud.sdk</groupId>
// <artifactId>huaweicloud-sdk-lakeformation</artifactId>
// <version>最新版本号</version>
// </dependency>
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.http.HttpConfig;
import com.huaweicloud.sdk.lakeformation.v1.LakeFormationClient;
import com.huaweicloud.sdk.lakeformation.v1.model.*;
public class LakeFormationDemo {
public static void main(String[] args) {
// 配置认证信息
String ak = "您的AccessKey";
String sk = "您的SecretKey";
String region = "cn-north-4"; // 根据实际区域调整
ICredential credential = new BasicCredentials()
.withAk(ak)
.withSk(sk);
// 创建客户端
LakeFormationClient client = LakeFormationClient.newBuilder()
.withCredential(credential)
.withRegion(region)
.withHttpConfig(HttpConfig.getDefaultHttpConfig())
.build();
// 查询Catalog列表
ListCatalogsRequest request = new ListCatalogsRequest();
request.setInstanceId("您的实例ID");
try {
ListCatalogsResponse response = client.listCatalogs(request);
System.out.println("Catalog列表: " + response.getCatalogs());
} catch (Exception e) {
System.err.println("查询Catalog失败: " + e.getMessage());
}
// 创建数据库
CreateDatabaseRequest createDbRequest = new CreateDatabaseRequest();
createDbRequest.setInstanceId("您的实例ID");
createDbRequest.setCatalogName("hive");
DatabaseInput databaseInput = new DatabaseInput();
databaseInput.setName("test_database");
databaseInput.setDescription("测试数据库");
databaseInput.setLocation("obs://your-bucket/path");
createDbRequest.setBody(databaseInput);
try {
CreateDatabaseResponse createDbResponse = client.createDatabase(createDbRequest);
System.out.println("数据库创建成功: " + createDbResponse.getDatabase());
} catch (Exception e) {
System.err.println("创建数据库失败: " + e.getMessage());
}
}
}
11.3 访问方式总结
LakeFormation提供了三种访问方式:
- API方式:将LakeFormation实例集成到第三方系统用于二次开发
- 控制台方式:从服务列表中选择大数据 > 湖仓构建LakeFormation访问
- SDK方式:提供兼容Hive元数据模型的SDK客户端,用于Hive、Spark等计算引擎对接
十二、最佳实践与注意事项
12.1 实例与集群同Region
MRS集群和LakeFormation实例必须同在一个云账户下且属于同一个Region。不同区域的云服务产品之间内网互不相通,请就近选择靠近您业务的区域,可减少网络时延。
12.2 VPC网络一致性
LakeFormation侧创建的接入客户端所在虚拟私有云,必须与MRS集群在同一虚拟私有云下。MRS集群的VPC子网信息可通过登录MRS管理控制台,在MRS集群的概览页面中获取。
12.3 Catalog名称约束
MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。对接MRS前需要确认创建了名称为hive的Catalog。
12.4 存量集群迁移
MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。
12.5 授权主体命名规范
授权主体(用户组、角色、IAM用户、委托用户)名称中不能包含中划线(-),否则可能造成操作失败。
12.6 删除操作注意事项
删除Catalog前需要提前删除该Catalog下的数据库。删除元数据时如果同步删除文件,数据将移入对应OBS桶的回收站(lake-formation-trash-dir/table_id OBS路径)目录下。删除后数据无法恢复,请谨慎操作。
12.7 接入客户端数量限制
同一个实例下默认最多创建20个接入客户端。
十三、总结
华为云LakeFormation作为企业级数据湖一站式构建服务,通过存算分离架构、统一元数据管理、细粒度权限控制、多计算引擎对接等核心能力,为企业数据湖建设提供了完整的解决方案。
从服务开通、实例创建、元数据规划(Catalog/数据库/表)、权限体系配置(基于Ranger模型的细粒度授权),到与MRS、DLI、DataArts Studio等计算引擎的详细对接,LakeFormation提供了完整的操作流程和丰富的API/SDK支持。
通过LakeFormation,企业可以一站式可视化地进行湖仓构建,在元数据授权的同时自动化完成元数据所映射的文件目录的授权,实现针对数据湖的库、表、列级元数据的细粒度访问控制。无论是数据湖的初始化建设,还是后续日常的海量元数据及权限管理,LakeFormation都能提供便捷高效的建设和管理方式。
在实际使用中,需要注意实例与集群同Region、VPC网络一致性、Catalog名称约束(MRS场景必须为hive)、存量集群迁移等关键事项,确保对接过程的顺利进行。
常见问题解答
问1:LakeFormation支持对接哪些计算引擎?
答:LakeFormation支持对接MapReduce服务(MRS)、数据仓库服务(DWS)、数据湖探索(DLI)、AI开发平台ModelArts、数据治理中心DataArts Studio等多种计算引擎及大数据云服务。
问2:MRS对接LakeFormation时Catalog名称有什么要求?
答:MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。对接MRS前需要确认创建了名称为hive的Catalog。
问3:DLI对接LakeFormation有什么限制?
答:DLI只能连接到默认的LakeFormation实例。目前DLI对接LakeFormation功能处于受限使用阶段,需要提交工单申请开通该功能。
问4:LakeFormation的权限模型是怎样的?
答:LakeFormation兼容Ranger权限模型,支持配置数据库、数据表、函数等维度的权限。授权主体支持IAM用户、用户组以及LakeFormation角色。授权对象支持Catalog、数据库、表及列、函数等元数据对象,也支持OBS路径。
问5:如何获取LakeFormation的SDK?
答:LakeFormation提供多种编程语言的SDK,可以在API Explorer中查看SDK代码示例。Java SDK可在Maven仓库中获取最新版本Jar包。LakeFormation提供兼容Hive元数据模型的SDK客户端。
问6:MRS存量集群如何迁移到LakeFormation?
答:MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。在LakeFormation管理控制台的任务管理 > 元数据迁移中配置迁移任务。迁移完成后将对应元数据的权限迁移至LakeFormation。



