管理LakeFormation数据源
LakeFormation是企业级数据湖一站式构建服务,提供数据湖元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型,支持对接MapReduce服务(MRS)、数据仓库服务 DWS等多种计算引擎及大数据云服务,使客户便捷高效地构建数据湖和运营相关业务,加速释放业务数据价值。
用户可以将海量业务数据,存储在MRS的分析集群,即使用Hive/Spark组件保存,Hive/Spark的数据文件则保存在OBS中。然后使用DWS通过LakeFormation服务来读取MRS集群上的数据。
DWS支持使用LakeFormation管理元数据,通过在控制台上创建LakeFormation数据源连接。在相同网络中,配置DWS集群连接到LakeFormation实例,通过Lakeformation获取表的元数据及权限信息,随后将OBS中的文件数据读取到DWS。
应用场景
相比于直接在DWS中管理外表元数据,使用LakeFormation管理元数据更适合以下业务场景:
- 场景1:企业已有基于LakeFormation构建的湖仓一体数据目录,希望DWS直接复用已有元数据,避免重复维护。
- 场景2:多个计算引擎(DWS、Spark、Flink等)需要共享同一套元数据,通过LakeFormation实现统一元数据管理。
- 场景3:需要统一的权限管控体系,通过LakeFormation集中管理数据访问权限。
约束与限制
- 该特性受限商用(需联系技术支持人员),仅支持以下集群版本:
- 存算分离集群仅支持9.0.1及以上集群版本。
- 存算一体集群仅支持8.2.1.300及以上集群版本。
- 删除LakeFormation数据源后,依赖该数据源的外表将无法正常使用,且操作不可逆,请谨慎操作。
- 更新数据源配置期间,相关查询可能短暂失败,请在业务低峰期执行。
前提条件
- 有可用的LakeFormation实例。详情请参见创建LakeFormation实例。
- 在LakeFormation控制台中的“接入管理”页面创建DWS集群所在VPC下的客户端,详情请参见管理接入客户端。
- 创建包含LakeFormation权限的委托(需包含最小权限),可参见创建LakeFormation委托配置,如果不配置在使用时将会报错。
- DWS调用LakeFormation管理面API时,账号如果为子账号则需要包含LakeFormation权限(至少包含lakeformation:instance:access、lakeformation:instance:describe、lakeformation:credential:describe)。
创建LakeFormation委托
创建LakeFormation数据源前需要提前创建好授权给DWS的委托,该委托具有“LakeFormation FullAccess”和“LakeFormationObsAccess”权限。
- 鼠标移动至页面右上角账号,单击“统一身份认证”,进入统一身份认证服务页面。
- 在左侧导航栏选择“权限管理 > 权限”,在权限页面右上角单击“创建自定义策略”。
- 创建LakeFormationObsAccess自定义策略(如果已包含相同策略则忽略),相关参数配置如下,配置完成后单击“确定”。
- 策略名称:LakeFormationObsAccess
- 策略配置方式:JSON视图
- 策略内容:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:ListAllMyBuckets" ] }, { "Effect": "Allow", "Action": [ "obs:bucket:GetLifecycleConfiguration", "obs:bucket:GetBucketLocation", "obs:bucket:PutLifecycleConfiguration", "obs:bucket:PutBucketAcl", "obs:bucket:HeadBucket", "obs:bucket:GetBucketAcl", "obs:bucket:ListBucket" ], "Resource": [ "OBS:*:*:bucket:*" ] }, { "Effect": "Allow", "Action": [ "obs:object:GetAccessLabel", "obs:object:PutObjectVersionAcl", "obs:object:DeleteAccessLabel", "obs:object:PutObjectAcl", "obs:object:PutAccessLabel", "obs:object:GetObjectVersion", "obs:object:GetObject", "obs:object:GetObjectVersionAcl", "obs:object:DeleteObject", "obs:object:DeleteObjectVersion", "obs:object:GetObjectAcl", "obs:object:PutObject" ], "Resource": [ "OBS:*:*:object:*" ] } ] } - 策略描述:Permissions required for LakeFormation to access OBS(LakeFormation访问OBS所需的权限)。
- 作用范围:全局级服务
- 在左侧导航栏单击“委托”,在委托页面右上角单击“创建委托”。
- 创建委托时委托类型选择“云服务”,云服务选择“数据仓库服务 DWS”。
- 单击“完成”,在弹窗中单击“立即授权”对委托授予已创建的“LakeFormationObsAccess”自定义策略和“LakeFormation FullAccess”系统策略权限。
如果最终DWS外表报错“ERROR: LakeFormation respond error, Http Code: 401, Error Code: lakeformation.00000016, Error Message: Insufficient IAM permission.”则说明权限不足,需要检查对LakeFormation委托权限正确。

- 单击“下一步”,选择授权资源范围为“所有资源”或需要访问的资源,确认无误后单击“确定”提交。
创建LakeFormation数据源
- 登录DWS管理控制台。
- 在左侧导航栏,选择“集群 > 集群列表”。
- 在集群列表,单击指定集群的名称,进入“集群详情”页面。
- 在上侧导航栏单击“数据源”,切换至“LakeFormation数据源”页签。
- 在LakeFormation数据源页面,单击“创建LakeFormation数据源连接”,填写配置参数。 图1 创建LakeFormation数据源连接
表1 LakeFormation数据源连接参数说明 参数名称
说明
数据源名称
要创建的LakeFormation数据源连接名称。
LakeFormation实例
待绑定的LakeFormation集群实例。在下拉列表中选择已创建的LakeFormation实例。
数据库
LakeFormation数据源连接所在的数据库。在下拉列表中选择LakeFormation实例中已存在的数据库。
委托
拥有LakeFormation授权的委托,用于DWS系统通过委托Token和LakeFormation交互以获取元数据。在下拉列表中选择已创建的委托。
描述
要创建的LakeFormation数据源连接的描述信息,便于后续管理和识别。
- 确认无误后,单击“确认”,弹出确认检查VPC终端节点的对话框,单击“是”提交创建操作,创建过程大约需要1分钟左右。
- 创建完成后,在LakeFormation数据源列表中查看新创建的数据源连接,配置状态显示为“可用”即表示创建成功。
更新LakeFormation数据源
用户如果需要更新LakeFormation数据源连接,可参考以下指导进行操作。
操作场景
- 委托变更。
- 当创建连接后误删了VPC终端节点,导致无法正常使用数据源。
- 由于特殊原因导致Token未能正常更新,确认问题修复后需要立即更新Token。
操作步骤
- 登录DWS管理控制台。
- 在左侧导航栏,选择“集群 > 集群列表”。
- 在集群列表,单击指定集群的名称,进入“集群详情”页面。
- 在上侧导航栏单击“数据源”,切换至“LakeFormation数据源”页签。
- 在“LakeFormation数据源”列表中选择要更新的LakeFormation数据源,单击所在行“操作”列的“更新配置”。
- 更新时仅支持更改委托,选择新的委托后,单击“确认”。 图2 更新LakeFormation数据源连接
- 弹出检查VPC终端节点的弹窗,确认无误后,单击“是”提交更新操作,更新过程大概需要1分钟左右。
- 更新完成后,在LakeFormation数据源列表中查看该数据源配置状态是否恢复为“可用”。如果之前因VPC终端节点删除导致数据源不可用,更新后状态应恢复正常。
删除LakeFormation数据源
- 登录DWS管理控制台。
- 在左侧导航栏,选择“集群 > 集群列表”。
- 在集群列表,单击指定集群的名称,进入“集群详情”页面。
- 在上侧导航栏单击“数据源”,切换至“LakeFormation数据源”页签。
- 在“LakeFormation数据源”列表中选择要删除的LakeFormation数据源,单击所在行“操作”列的“删除”。
- 弹出对话框,确认无误后输入“DELETE”或者单击“一键输入”,单击“确定”,提交删除操作,删除操作过程大概需要10秒钟左右。
- 删除完成后,在LakeFormation数据源列表中确认该数据源连接已从列表中消失,即表示删除成功。
使用LakeFormation数据源
使用LakeFormation数据源操作详情请参见使用LakeFormation数据源导入数据。
相关文档
- 对接LakeFormation最佳实践:湖仓一体:DWS通过对接Lakeformation读取MRS的Hive数据
- LakeFormation介绍:什么是湖仓构建LakeFormation