配置Hive表不同分区分别存储至OBS和HDFS
操作场景
在存算分离场景下,企业需要灵活管理数据存储,将热点数据存储在高性能的HDFS上以保障查询性能,将冷数据存储在低成本的OBS上以降低存储成本。Hive分区表支持不同的分区分别指定不同的存储源,可以指定一个分区表中不同分区的存储源为OBS或者HDFS。例如,将最近7天的热点分区数据存储在HDFS上,保障查询性能;将历史冷数据分区存储在OBS上,降低存储成本。这种混合存储方式可以在保证查询性能的同时,有效控制存储成本。
本文介绍如何配置Hive表的不同分区分别存储至OBS和HDFS。
此章节仅说明分区表指定存储源的能力,关于Hive如何在存算分离场景下对接OBS,对接指导可参考Hive对接OBS文件系统章节。
- 分区表(Partitioned Table):Hive中的一种表类型,通过分区键将数据划分为多个分区,每个分区对应一个独立的存储目录。分区表可以提高查询性能,因为查询时可以只扫描相关分区的数据。
- Location:Hive表或分区的存储位置,指定数据在HDFS或OBS上的存储路径。通过设置分区的Location,可以将不同分区的数据存储在不同的存储系统上。
约束与限制
本特性仅适用于MRS 3.2.0及之后版本。
前提条件
已安装Hive客户端。下载并安装集群客户端的具体操作,请参考安装MRS集群客户端。
操作步骤
- 以Hive客户端安装用户登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd 客户端安装目录例如安装目录为“/opt/client”,则执行以下命令:
cd /opt/client - 执行以下命令配置环境变量。
source bigdata_env
- 集群是否启用了Kerberos认证。
- 是,执行以下命令进行用户认证:
kinit Hive业务用户 - 否,执行5。
- 是,执行以下命令进行用户认证:
- 执行以下命令登录Hive客户端。
beeline
- 执行如下命令创建Hive分区表“table_1”,指定分区“pt='2021-12-12'”的路径为“hdfs://xxx”,指定分区“pt='2021-12-18'”的路径为“obs://并行文件系统名称/xxx”:
创建Hive分区表“table_1”:
create table table_1(id string) partitioned by(pt string) [stored as [orc|textfile|parquet|...]];
指定分区“pt='2021-12-12'”的路径为“hdfs://xxx”:
alter table table_1 add partition(pt='2021-12-12') location 'hdfs://xxx';
指定分区“pt='2021-12-12'”的路径为“obs://xxx”:
alter table table_1 add partition(pt='2021-12-18') location 'obs://并行文件系统名称/xxx';
- 给分区表“table_1”中插入数据后,对应的分区数据存储在对应的存储源上,可以使用desc查看分区的Location,执行以下命令查看路径下的数据:
desc formatted table_1 partition(pt='2021-12-18');
验证操作:
配置完成后,可通过以下方式验证分区存储位置是否正确:
- 执行desc formatted table_1 partition(pt='2021-12-12');命令,查看HDFS分区的Location。
- 执行desc formatted table_1 partition(pt='2021-12-18');命令,查看OBS分区的Location。
- 确认HDFS分区的Location以"hdfs://"开头,OBS分区的Location以"obs://"开头。
- 执行select * from table_1 where pt='2021-12-12';和select * from table_1 where pt='2021-12-18';命令,确认可以正常查询两个分区的数据。
常见问题
- 查询OBS分区时性能较差
OBS的访问时延高于HDFS,查询OBS分区时性能可能较差。
建议将热点数据分区存储在HDFS上,冷数据分区存储在OBS上。对于频繁查询的分区,可以考虑将其迁移到HDFS。或者使用缓存机制,将OBS数据缓存到本地。
- 无法访问OBS分区
无法访问OBS分区可能是因为OBS服务未正常运行、并行文件系统未创建、或Hive无法访问OBS。
请检查OBS服务状态,确认并行文件系统已创建。检查Hive配置中OBS相关的参数是否正确。
相关文档
- 了解Hive数据操作,请参考Hive数据存储及加密配置。
- 了解Hive常见问题,请参考Hive常见问题。
- 了解Hive各角色日志文件说明,请参考Hive日志介绍。