数据治理的背景

  • Hive SQL 查询速度慢
  • 同步队列排队多,同步速度慢
  • 跑批报 Code 1错误
  • 任务一直停在 Scheduled
  • 资源池 100% 占用

数据治理入手点

  1. 无效表
    • 近三月,有被 1 个及以上的下游任务应用,且任务执行成功次数为 0,或无下游任务引用
    • 近三月,有被 API 调用,且 API 调用次数为 0,或没被 API 调用过
    • 同步至 BI 分析平台,且在 BI 分析平台上被标识为无效表或没有成功同步至 BI 分析平台
    • 近三月即席查询次数为 0
  2. 小文件
    • Hadoop 默认一个 block 块的大小是 128 M 。如果一个 HDFS 文件大小远远小于 128 M,则认为该文件为小文件。(HDFS 以 block 块的形式存储在集群上,HDFS 中小于一个块大小的文件不会占满整个块的空间,文件有多大占多大空间。)实际上,通常会对 1M 以下的小文件进行治理。
  3. 多分区
    • 重点治理分区数较多的表。实际上,通常会对分区数超过 1500 的表进行治理。

数据治理方法

byteprince.com 数据治理方法

数据治理的好处

  • 查询速度提升

小文件治理后,可以大大减少查询时扫描的文件数量,提高查询速度。

  • 消耗存储资源减少

  • 消耗计算资源减少

小文件合并后,减少 Namenode 的压力,减少启动的 Container 的个数,节约计算资源

  • 成本下降

建立治理清单

byteprince.com 数据治理清单

治理方法详解

无效表

通过表效率,筛选出无效表,确认后进行删除。无效表删除时尽量避免并行执行,以免使得平台高负载。

小文件

表文件合并

  • 方式一:备份源表,使用 insert overwrite table A select * from A
  • 方式二:备份源表,建新表,将新表重命名为 A 表

非分区表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-- 备份表
create table <db_name>.A_bak as select * from <db_name>.A;

-- 新建表B,并为B表添加注释
create external table <db_name>.B like <db_name>.A
stored as orc tblproperttes('TRANSLATED_TO_EXTERNAL' = 'TRUE');
ALTER TABLE <db_name>.B SET tblproperties('comment' = '表中文名') 

-- 将表A的数据插入表B
insert overwrite <db_name>.B select * from <db_name>.A;

-- 重命名B表
alter table <db_name>.A