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

配置Hive通过IAM委托访问OBS

参考配置MRS集群通过IAM委托对接OBS完成存算分离集群配置后,即可在Hive客户端创建Location为OBS路径的表。

建表时指定Location为OBS路径

  1. 使用安装客户端用户登录客户端安装节点。
  2. 执行如下命令初始化环境变量。

    source 客户端安装目录/bigdata_env

  3. 如果是安全集群,执行以下命令进行用户认证(该用户需要具有Hive操作的权限),如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit Hive组件操作用户

  4. MRS 3.2.0之前版本,登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置 > 全部配置”。

    在左侧的导航列表中选择“Hive > 自定义”。在自定义配置项中,给参数“hdfs.site.customized.configs”添加配置项“dfs.namenode.acls.enabled”,设置值为“false”

    图1 添加自定义参数

  5. MRS 3.2.0之前版本,单击“保存”,保存配置。单击“概览”,选择“更多 > 重启服务”,输入当前用户密码,单击“确定”,并勾选“同时重启上层服务。”,单击“确定”,重启Hive服务。
  6. 进入beeline客户端,在创建表时指定Location为OBS文件系统路径。

    beeline

    例如,创建一个表“test”,该表的Location为“obs://OBS并行文件系统名称/user/hive/warehouse/数据库名/表名”:

    create table test(name string) location "obs://OBS并行文件系统名称/user/hive/warehouse/数据库名/表名";

    需要添加组件操作用户到Ranger策略中的URL策略,URL填写对象在OBS上的完整路径权限选择Read, Write 权限,其他权限不涉及URL策略。详细操作MRS 3.x之前版本请参考在Ranger中配置Hive的访问权限,MRS 3.x及之后版本请参考添加Hive的Ranger访问权限策略

配置Hive基于MetaStore方式对接OBS

  1. 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置 > 全部配置”。

    • MRS 3.2.0之前版本:
      • 在左侧的导航列表中选择“MetaStore(角色) > 自定义”,为自定义参数“hive.metastore.customized.configs”添加配置项“hive.metastore.warehouse.dir”,设置值为OBS路径,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS并行文件系统名称。
        图2 hive.metastore.warehouse.dir配置
      • 在左侧的导航列表中选择“HiveServer(角色) > 自定义”,为自定义参数“hive.metastore.customized.configs”和“hive.server.customized.configs”添加配置项“hive.metastore.warehouse.dir”,设置值为OBS路径,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS并行文件系统名称。
        图3 hive.metastore.warehouse.dir配置
    • MRS 3.2.0及之后版本:
      在搜索框搜索“hive.metastore.warehouse.dir”,修改参数值为OBS路径,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS文件系统名。
      图4 hive.metastore.warehouse.dir配置

  2. 保存并重启Hive服务。
  3. (可选)安装客户端,具体请参考安装MRS集群客户端。如果集群已安装客户端请执行4
  4. 更新客户端配置文件。

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

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

    2. 将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径并保存,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS并行文件系统名称。
      图5 配置OBS路
    3. MRS 3.2.0及之后版本,修改HCatalog客户端配置文件目录下的“hivemetastore-site.xml”,将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径,例如“obs://hivetest/user/hive/warehouse/”。

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

  5. 进入beeline客户端,创建表并确认Location为OBS路径。

    beeline

    create table test(name string);

    desc formatted test;

    表的Location为OBS路径:

    图6 Hive表的Location信息

    如果当前数据库Location已指向HDFS,那么在当前数据库下建表(不指定Location)默认也指向当前HDFS。如需修改默认建表策略可以修改数据库的Location重新指向OBS。操作如下:

    1. 执行以下命令查看数据库Location。

      show create database obs_test;

      图7 查看Hive表的Location
    2. 执行以下命令修改数据库Location。

      alter database obs_test set location 'obs://OBS并行文件系统名称/user/hive/warehouse/数据库名'

      执行命令show create database obs_test,查看数据库Location已经指向OBS。

      图8 查看修改后的Hive表的Location
    3. 执行以下命令修改表的Location。

      alter table user_info set location 'obs://OBS并行文件系统名称/user/hive/warehouse/数据库名/表名'

      如果表已有业务数据,需要同步迁移原数据文件至修改后的Location地址。