文档首页/
MapReduce服务 MRS/
用户指南/
配置MRS集群存算分离/
配置MRS集群通过Guardian对接OBS/
MRS集群服务对接OBS示例/
配置Hive通过Guardian访问OBS
更新时间:2024-12-17 GMT+08:00
配置Hive通过Guardian访问OBS
参考配置Guardian服务对接OBS完成Guardian对接OBS后,即可在Hive客户端创建存储在OBS并行文件系统中的表。
Hive对接OBS
MRS集群支持Hive服务基于Metastore方式对接OBS。
配置Hive基于MetaStore方式对接OBS:
- 已参考配置Guardian服务对接OBS完成存算分离配置。
- 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置”。
- 在搜索框搜索“hive.metastore.warehouse.dir”,修改参数值为OBS路径,例如:obs://hivetest/user/hive/warehouse/,其中“hivetest”为OBS文件系统名。
图1 hive.metastore.warehouse.dir配置
- 保存配置,然后单击“集群 > 服务”,在服务列表中重启Hive服务。
- 更新客户端配置文件。
- 登录Hive客户端所在的节点,执行以下命令修改Hive客户端配置文件目录下的“hivemetastore-site.xml”。
- 将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径,例如“obs://hivetest/user/hive/warehouse/”。
图2 配置OBS路径
- 修改HCatalog客户端配置文件目录下的“hivemetastore-site.xml”,将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径,例如“obs://hivetest/user/hive/warehouse/”。
- 进入Hive Beeline命令行,创建一个数据库并确认Location为OBS路径。
cd 客户端安装目录
kinit 组件操作用户
beeline
create database testdb1;
show create database testdb1;
图3 查看新创建的Hive数据库的Location
Ranger权限配置
- hive用户组赋予OBS路径的读写权限
- 使用Ranger管理员用户登录Ranger WebUI页面,在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”,为hive用户组赋予OBS存储路径的“Read”和“Write”的权限,此时拥有hive组的用户均可以访问hive数据仓库路径。
例如,为“hive”用户组赋予“obs://hivetest/user/hive/warehouse/”目录的“Read”和“Write”的权限:
图4 为hive用户组赋予OBS存储路径的读和写权限
- 选择“Settings > Roles > Add New Role”,创建“Role Name”为“hive”的角色:
图5 创建hive角色
- 使用Ranger管理员用户登录Ranger WebUI页面,在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”,为hive用户组赋予OBS存储路径的“Read”和“Write”的权限,此时拥有hive组的用户均可以访问hive数据仓库路径。
- 自定义用户组赋予OBS路径的读写权限
- 登录FusionInsight Manager,选择“系统 > 权限 > 用户组 > 添加用户组”。
- 创建一个空角色的用户组,例如,名称为“hiveobs1”,并将该用户组绑定给对应用户。
- 使用rangeradmin用户登录Ranger管理页面。
- 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
- 为“hiveobs1”用户组赋予OBS存储路径的“Read”和“Write”的权限,此时绑定“hiveobs1”组的用户均可以访问hive数据仓库路径。
图6 为自定义Hive用户组赋予OBS存储路径读和写权限
- 自定义Location创建库/表/分区授予OBS路径读写权限
- 使用Ranger管理员用户登录Ranger WebUI页面。
- 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”,为对应用户的用户组赋予OBS存储路径的“Read”和“Write”的权限。
例如,为“hgroup1”用户组赋予“obs://obs-test/test/”目录的“Read”和“Write”的权限:
图7 为用户组赋予OBS路径读和写的权限
- 在首页中单击“HADOOP SQL”区域的组件插件名称“Hive”,为对应用户的用户组添加赋予OBS存储路径的“Read”和“Write”权限的URL策略,详细操作请参见添加Hive的Ranger访问权限策略。
例如,为“hgroup1”用户组创建“hive_url_policy”URL策略赋予“obs://obs-test/test/”目录的“Read”和“Write”的权限:
图8 添加具有OBS路径读和写权限的URL策略
- 进入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功能。
父主题: MRS集群服务对接OBS示例