admin管理员组

文章数量:1567046

HIVE 数据仓库容量清理的一般操作

      • 清理无用数据
      • 归档访问频率低的冷历史数据
      • 未压缩的文本表进行压缩处理

本博客结合笔者公司,总结了一下一般的数据仓库容量清理手段,见识浅陋,如有大佬路过,欢迎指点

随着数据仓库数据量的不断上升,一些表的文件越来越大,HADOOP 集群需要不断的加机器,随着不断的拓展,我们会发现:优化和清理同样重要,优化和清理的尽头才是加机器

此时我们需要对HIVE的容量着手,开始考虑如何清理容量,一般有有一下几点:

清理无用数据

无用的数据很主观,需要对整个仓库的表进行梳理,主要针对以下这些表:

① 临时表

测试或者临时使用的表,这些表的数据一般是无用的

② 中间表

我们在计算过程中,可能会使用一些中间表,如果是分区表,我们就要考虑下,如果这个中间表的数据可以溯源重新计算出来,那么这样的数据可以清理。中间表应该制定规范,尽量少使用中间表,使用完及时清理。

③ ODS 层的表

ODS 层一般是贴源层,抽取业务数据库的数据。如果每天抽取的数据都是全量同时表为分区表,那么历史分区是可以清除的。

归档访问频率低的冷历史数据

HDFS 的设计中,文件系统中的文件数量直接影响 namenode 中的内存消耗。虽然对于小型集群来说通常不是问题,但当有大量文件时,单个机器上的内存使用可能会达到可访问内存的极限。在这种情况下,尽可能少的文件是有利的。

Hadoop 归档后的文件格式为 Har(一种存储格式) 文件,是一个单独的文件,可以直接访问,但是 HAR 文件并非是压缩的. 因此也不会节约存储空间

Hadoop Archives 是减少文件数量的一种手段,对于访问频率低的冷历史数据我们可以考虑归档方案。

① 归档历史分区

② 归档不常用的数据

③ 归档某个分区下小文件过多的问题

-- 归档后会生成 har 文件
set hive.archive.enabled=true;
alter table cust_info archive partition(ds='20220302');

-- 归档后查看数据
select * from cust_info where ds = '20220302';

-- 可以恢复归档文件
alter table cust_info unarchive partition(ds='20220302');


未压缩的文本表进行压缩处理

压缩是指将原来的 TEXT 格式的未压缩表,替换成 ORC: SNAPPY 压缩的表,从而降低数据存储的占用。主要的流程为:

① 假设我们现在有一张表,压缩格式为 TEXT ,我们现在要调整该表的压缩格式

CREATE TABLE IF NOT EXISTS stu_info
(
    stu_id      string    COMMENT '学生ID'
   ,stu_name    string    COMMENT '学生姓名'
   ,stu_age     string    COMMENT '学生年龄'
   ,stu_addr    string    COMMENT '学生地址'
)
COMMENT '学生信息表'
PARTITIONED BY (ds string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS textfile;

② 新建一张和目标表字段相同的表,压缩格式为 ORC: SNAPPY

CREATE TABLE IF NOT EXISTS stu_info_orc
(
    stu_id      string    COMMENT '学生ID'
   ,stu_name    string    COMMENT '学生姓名'
   ,stu_age     string    COMMENT '学生年龄'
   ,stu_addr    string    COMMENT '学生地址'
)
COMMENT '学生信息表'
PARTITIONED BY (ds string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc tblproperties ("orcpress"="SNAPPY");

③ 将 stu_info 的数据导入到压缩表 stu_info_orc

INSERT OVERWRITE TABLE stu_info_orc
SELECT * FROM stu_info

④ 检查无误后,移除非压缩表,重命名压缩表以保持和原表同名

为了安全起见,压缩后需要检查表的数据格式和数据量,防止异常

本文标签: 数据仓库容量Hive