使用本章节前已参考配置存算分离集群(委托方式)或配置存算分离集群(AKSK方式)完成存算分离集群配置。
建表时指定Location为OBS路径
1.使用安装客户端用户登录客户端安装节点。
2.执行如下命令初始化环境变量。
source ${client_home}/bigdata_env
3.如果是安全集群,执行以下命令进行用户认证(该用户需要具有Hive操作的权限),如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit Hive组件操作用户
4.登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置 > 全部配置”。
在左侧的导航列表中选择“Hive>自定义”。在自定义配置项中,给参数“hdfs.site.customized.configs”添加配置项“dfs.namenode.acls.enabled”,设置值为“false”。
5.单击“保存”,保存配置。单击“概览”,选择“更多 > 重启服务”,输入当前用户密码,单击“确定”,并勾选“同时重启上层服务。”,单击“确定”,重启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策略。
指定创建的Hive表默认Location为OBS路径
1.登录FusionInsight Manager,选择“集群 > 服务 > Hive > 配置 > 全部配置”。
2.在左侧的导航列表中选择“MetaStore > 自定义”。在自定义配置项中,给参数“hive.metastore.customized.configs”添加配置项“hive.metastore.warehouse.dir”,设置值为OBS路径。
详见下图:hive.metastore.warehouse.dir配置
3.在左侧的导航列表中选择“HiveServer > 自定义”。在自定义配置项中,给参数“hive.metastore.customized.configs”和“hive.server.customized.configs”添加配置项“hive.metastore.warehouse.dir”,设置值为OBS路径。
详见下图:hive.metastore.warehouse.dir配置
4.保存并重启Hive服务。
5.更新客户端配置文件。
a.执行以下命令修改客户端Hive配置文件目录下的“hivemetastore-site.xml”。
vim /opt/Bigdata/client/Hive/config/hivemetastore-site.xml
b.将“hive.metastore.warehouse.dir”的值修改为对应的OBS路径。
6.进入beeline客户端,创建表并确认Location为OBS路径。
beeline
create table test(name string);
desc formatted test;
说明如果当前数据库Location已指向HDFS,那么在当前数据库下建表(不指定Location)默认也指向当前HDFS。如需修改默认建表策略可以修改数据库的Location重新指向OBS。操作如下:
a.执行以下命令查看数据库Location。
show create database obs_test ;
b.执行以下命令修改数据库Location。
alter database obs_test set location obs:// OBS 并行文件系统名称/user/hive/warehouse/ 数据库名'
执行命令 show create database obs_test ,查看数据库Location已经指向OBS。
c.执行以下命令修改表的Location。
alter table user_info set location ' obs:// OBS 并行文件系统名称/user/hive/warehouse/ 数据库名/ 表名'
如果表已有业务数据,需要同步迁移原数据文件至修改后的Location地址。