
# 为已有集群配置LakeFormation数据连接
该章节指导用户为当前已有的MRS 3.6.0-LTS及之后版本未开启Kerberos认证的集群对接LakeFormation。
#### 前提条件
- MRS集群已关闭Kerberos认证，且集群为MRS 3.6.0-LTS及之后版本。
- MRS集群已开启存算分离，数据存储在OBS中。
- 集群的区域与LakeFormation实例保持一致。集群的虚拟私有云与LakeFormation数据连接保持一致。
- 集群需包含Hadoop、Ranger、Hive、Guardian、Spark（可选）、Flink（可选）等组件。
- Ranger组件至少包含1个PolicySync（PSC）实例（该实例部署节点需要包含RangerAdmin实例）、Guardian组件至少包含2个TokenServer（TS）实例。
- 如果集群配置LakeFormation数据连接后再添加Spark组件，Spark配置对接LakeFormation只需要在数据连接中选择解绑Hive的LakeFormation数据连接，然后重新配置即可。
- MRS集群创建成功后，已通过MRS管理控制台同步IAM用户，且集群各服务运行正常。
 
#### 配置MRS集群对接LakeFormation
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 选择"现有集群"。
3. 单击待对接的MRS名称进入集群"概览"页签。
4. 单击"委托"后的"选择委托"，选择[创建对接ECS/BMS云服务委托](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section1338192510169)创建的委托名称。
   
   如果当前MRS集群已绑定委托，请根据实际情况确认原委托的权限策略是否需要保留，如果需要保留请将其添加到[创建对接ECS/BMS云服务委托](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section1338192510169)创建的委托上，然后将该委托绑定到MRS集群上（修改后委托权限生效有一定延后性）。
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002404208761.png "点击放大")
   
   
5. 单击"数据连接"右侧的"单击管理"，进入数据连接配置界面。
6. 单击"配置LakeFormation数据连接"，在下拉框中选择[创建LakeFormation数据连接](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section553942945017)记录的LakeFormation数据连接ID，单击"确定"。（如果已存在Hive的本地数据库数据连接，不需要解绑）
   
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   配置LakeFormation数据连接的功能，需要联系技术支持申请开通白名单。
   图1配置LakeFormation数据连接   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002368653438.png "点击放大")
   
   
7. 登录MRS集群的Manager页面。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
8. 配置Guardian。 
   1. 在Manager界面，选择"集群 \> 服务 \> Guardian \> 配置 \> 全部配置"，搜索并修改以下参数后，单击"保存"。
      表1配置Guardian参数 
      | 参数                                    | 含义                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 取值                                                                                |
      |:---|:---|:---|
      | token.server.access.iam.domain.id     | 访问IAM的用户对应的账号 ID。 参考[获取账号ID信息](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section1911111335812)获取账号ID信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | xxx                                                                               |
      | token.server.access.iam.project.id    | 访问IAM的用户对应的项目ID。 参考[获取账号ID信息](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section1911111335812)获取项目ID信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | xxx                                                                               |
      | token.server.access.label.agency.name | 指定IAM委托的名字，需要具有访问OBS的权限。 即[创建对接OBS权限的委托](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section1237122515161)创建的委托名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | visit_obs_agency                                                                  |
      | fs.obs.delegation.token.providers     | delegation.token的产生类名，默认为空。 此处同时勾选以下参数值： - com.huawei.mrs.dt.MRSDelegationTokenProvider  - com.huawei.mrs.dt.GuardianDTProvider   | com.huawei.mrs.dt.MRSDelegationTokenProvider,com.huawei.mrs.dt.GuardianDTProvider |
      | fs.obs.guardian.accesslabel.enabled   | 是否开启使用Guardian对接OBS的access label。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | true                                                                              |
      | fs.obs.guardian.enabled               | 是否开启使用Guardian。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | true                                                                              |
         
      
   
   2. 进入Guardian服务"概览"页面，选择"更多 \> 重启服务"。
   
   
   
   
9. 配置Hive对接OBS文件系统。 
   1. 在Manager界面，选择"集群 \> 服务 \> Hive \> 配置 \> 全部配置"。
   
   2. 在左侧的导航列表中选择"HiveServer \> 自定义"。在自定义配置项中添加如下参数。
      表2HiveServer自定义参数配置说明 
      | 参数                                | 示例                                                                                                                                                                                                                                                                                                                                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      |:---|:---|:---|
      | hive.server.customized.configs    | - 名称：hive.metastore.warehouse.dir  - 值：obs://lakeformation-test/hive    | - 添加参数"hive.metastore.warehouse.dir"。  - 设置值为[配置LakeFormation实例](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section785954117267)章节获取的hive Catalog在OBS中的存储路径。   |
      | hive.metastore.customized.configs | - 名称：hive.metastore.warehouse.dir  - 值：obs://lakeformation-test/hive   | - 添加参数"hive.metastore.warehouse.dir"。  - 设置值为[配置LakeFormation实例](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section785954117267)章节获取的hive Catalog在OBS中的存储路径。   |
         
      
   
   3. 单击"保存"，保存配置。
   
   
   
   
10. 配置Spark对接OBS文件系统。如果集群不存在Spark组件请跳过该步骤。 
    1. 在Manager界面，选择"集群 \> 服务 \> Spark \> 配置 \> 全部配置"。
    
    2. 在左侧的导航列表中选择"JDBCServer \> 自定义"，参考下表增加自定义参数及值。
        表3Spark参数配置 
       | 自定义参数                              | 参数值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
       |:---|:---|
       | spark.hive-site.customized.configs | - 参数：hive.metastore.warehouse.dir  - 值：设置为[配置LakeFormation实例](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300726.html#mrs_01_300726__zh-cn_topic_0000002368493490_section785954117267)章节获取的hive Catalog在OBS中的存储路径，例如"obs://lakeformation-test/hive"。   |
          
       
    
    3. 在左侧的导航列表中选择"SparkResource \> 自定义"，参考[表3]配置参数。
    
    4. 单击"保存"，保存配置。
    
    
    
    
11. 在MRS集群"组件管理"页签，查看是否存在"配置超期"的组件，如果存在请单击"操作"列的"重启"，重启相关组件。
12. 重新下载并安装MRS集群完整客户端。具体操作请参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0089.html)。
13. 确认当前集群客户端场景。 
    - 如果当前为集群内客户端，需要使用**omm** 用户操作，**omm** 用户默认具有OBS读写权限，不需要额外授权。执行[步骤 15]。
    
    - 如果当前为集群外客户端，则只能使用Manager用户操作，请执行[步骤 14]进行授权。
    
    
    
    
14. 如果当前为集群外客户端，在LakeFormation实例上添加OBS的角色授权，并在MRS Ranger上绑定Manager用户到LakeFormation角色上。
    
    1. 登录Manager界面，创建人机用户（例如用户名为"user1"），该用户具有待操作组件的相关权限。 创建用户具体操作，请参考[创建MRS集群用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)。
       
    
    2. 在LakeFormation实例上添加OBS的角色授权。
       1. 登录华为云管理控制台，在左上角单击"![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002395769748.png)"，选择"大数据 \> 湖仓构建 LakeFormation"进入LakeFormation控制台。
       
       2. 选择"数据权限 \> 角色"，单击"创建角色"，创建一个角色，例如角色名称为"testrole"，单击"确定"。
       
       3. 选择"数据权限 \> 数据授权"，单击"授权"，参考如下配置，将数据表的OBS路径的读写权限赋予"testrole"，单击"确定"。
          - 主体类型：选择"角色"。
          
          - 选择角色：下拉框选择刚创建的角色，例如"testrole"。
          
          - 授权类型：选择"路径"。
          
          - 路径：选择为数据表的存储路径。
          
          - 操作类型：勾选"READ"、"WRITE"。
           
        
    
    3. 在MRS Ranger上绑定Manager用户到LakeFormation角色上。
       1. 使用**admin**用户登录MRS集群的Manager页面，选择"集群 \> 服务 \> Ranger"。
       
       2. 在Ranger服务概览，单击"RangerAdmin"进入Ranger Web UI界面。
       
       3. 单击菜单栏"Settings"，选择"Roles"页签，查看添加的角色（例如"testrole"）是否已同步。
       
       4. 在Ranger页面为用户绑定角色。 单击角色名称"testrole"，在"Users"下"Select User"输入框中填入已创建的Manager用户（例如用户名为"user1"），单击"Add Users"，然后单击"Save"保存退出。
          
        
    
    4. 在集群外客户端上登录组件客户端时指定Manager用户（例如用户名为"user1"）的命令参考如下：
       - Hive： **hive beeline -n** *user1*
         
       
       - Spark： **spark-beeline -n** *user1*
         执行spark-sql、spark-submit命令时，执行以下命令：
         **export HADOOP_USER_NAME=** *user1*
         
       
       - HetuEngine： **hetu-cli --user** *user1*
         
       
       - Flink： Flink客户端不支持指定Manager用户，只能使用**omm**系统用户。
         FlinkServer创建Hive表owner默认是委托用户，不是Manager用户；正常使用Manager用户登录UI即可。
         
        
    
    
    
    
15. 如果需要在管理控制台执行作业提交操作，需要更新集群内置客户端配置文件。
    
    在MRS集群概览页面，获取弹性IP，使用该IP登录Master节点，执行如下命令刷新集群内置客户端。
    **su - omm**
    **sh /opt/executor/bin/refresh-client-config.sh**
    
    
16. 登录客户端安装节点，通过Hive客户端查看数据库，确认对接成功。 
    **source** *客户端安装路径* **/bigdata_env**
    **beeline**
    **show databases;desc database default;**
    **!q**
    
    
17. 通过Spark客户端，查看数据库，确认对接成功。如果集群不存在Spark组件请跳过该步骤。 
    **source** *客户端安装路径* **/Spark/component_env**
    **spark-sql**
    **show databases;desc database default;**
    
    
 
#### 相关文档
对接LakeFormation后，支持通过调整Hive的配置参数，在Hive客户端查看数据库、数据表列表或者通过JDBC的getMetaData接口获取元数据信息时，仅显示当前用户有权限访问的数据库和表，其他未被授权的库表将不再展示，具体操作请参考[配置Hive对接LakeFormation支持show databases/tables鉴权](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300800.html)。
