更新时间:2024-12-17 GMT+08:00

配置Hive通过Guardian访问OBS

参考配置Guardian服务对接OBS完成Guardian对接OBS后,即可在Hive客户端创建存储在OBS并行文件系统中的表。

Hive对接OBS

MRS集群支持Hive服务基于Metastore方式对接OBS。

配置Hive基于MetaStore方式对接OBS:

  1. 已参考配置Guardian服务对接OBS完成存算分离配置。
  2. 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置”。
  3. 在搜索框搜索“hive.metastore.warehouse.dir”,修改参数值为OBS路径,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS文件系统名。

    图1 hive.metastore.warehouse.dir配置

  4. 保存配置,然后单击“集群 > 服务”,在服务列表中重启Hive服务。
  5. 更新客户端配置文件。

    1. 登录Hive客户端所在的节点,执行以下命令修改Hive客户端配置文件目录下的“hivemetastore-site.xml”。

      vi 客户端安装目录/Hive/config/hivemetastore-site.xml

    2. 将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径,例如“obs://hivetest/user/hive/warehouse/”。
      图2 配置OBS路径
    3. 修改HCatalog客户端配置文件目录下的“hivemetastore-site.xml”,将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径,例如“obs://hivetest/user/hive/warehouse/”。

      vi 客户端安装目录/Hive/HCatalog/conf/hivemetastore-site.xml

  6. 进入Hive Beeline命令行,创建一个数据库并确认Location为OBS路径。

    cd 客户端安装目录

    kinit 组件操作用户

    beeline

    create database testdb1;

    show create database testdb1;

    图3 查看新创建的Hive数据库的Location

Ranger权限配置

  • hive用户组赋予OBS路径的读写权限
    1. 使用Ranger管理员用户登录Ranger WebUI页面,在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”,为hive用户组赋予OBS存储路径的“Read”和“Write”的权限,此时拥有hive组的用户均可以访问hive数据仓库路径。

      例如,为“hive”用户组赋予“obs://hivetest/user/hive/warehouse/”目录的“Read”和“Write”的权限:

      图4 hive用户组赋予OBS存储路径的读和写权限
    2. 选择“Settings > Roles > Add New Role”,创建“Role Name”为“hive”的角色:
      图5 创建hive角色
  • 自定义用户组赋予OBS路径的读写权限
    1. 登录FusionInsight Manager,选择“系统 > 权限 > 用户组 > 添加用户组”。
    2. 创建一个空角色的用户组,例如,名称为“hiveobs1”,并将该用户组绑定给对应用户。
    3. 使用rangeradmin用户登录Ranger管理页面。
    4. 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
    5. 为“hiveobs1”用户组赋予OBS存储路径的“Read”和“Write”的权限,此时绑定“hiveobs1”组的用户均可以访问hive数据仓库路径。
      图6 为自定义Hive用户组赋予OBS存储路径读和写权限
  • 自定义Location创建库/表/分区授予OBS路径读写权限
    1. 使用Ranger管理员用户登录Ranger WebUI页面。
    2. 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”,为对应用户的用户组赋予OBS存储路径的“Read”和“Write”的权限。

      例如,为“hgroup1”用户组赋予“obs://obs-test/test/”目录的“Read”和“Write”的权限:

      图7 为用户组赋予OBS路径读和写的权限
    3. 在首页中单击“HADOOP SQL”区域的组件插件名称“Hive”,为对应用户的用户组添加赋予OBS存储路径的“Read”和“Write”权限的URL策略,详细操作请参见添加Hive的Ranger访问权限策略

      例如,为“hgroup1”用户组创建“hive_url_policy”URL策略赋予“obs://obs-test/test/”目录的“Read”和“Write”的权限:

      图8 添加具有OBS路径读和写权限的URL策略
    4. 进入beeline客户端,在创建表时指定Location为OBS文件系统路径。

      cd 客户端安装目录

      kinit 组件操作用户

      beeline

      例如,创建一个表“test”,该表的Location为“obs://obs-test/test/数据库名/表名”:

      create external table test(name string) location "obs://obs-test/test/数据库名/表名";

  • 视图表授权需要授予视图表权限和视图表对应的物理表路径权限。
  • 仅支持对数据库/表进行级联授权操作,不支持对分区做级联权限,如果分区路径不在表路径下,则需要用户手动授权分区路径。
  • 不支持对Hive Ranger策略中的“Deny Conditions”进行级联授权,即“Deny Conditions”的权限仅限制表权限,不能生成HDFS/OBS存储源端的权限。
  • 级联授权生成的HDFS/OBS存储源端的权限弱于HDFS Ranger策略的权限,即如果已经对表的HDFS存储源设置了HDFS Ranger权限,则级联权限将不会生效。
  • 不支持对存储源为OBS的表级联授权后直接进行alter操作,需要给对应用户组额外授予OBS表路径的父目录的“Read”和“Write”权限才能使用alter功能。