hive中表状态数据的获取
在做容量规划的时候,我们需要关注hive中表的占用空间大小,文件数量,平均文件大小,已及存储格式,虽然在hive中也有statistcs的功能,但是值并准确(相比mysql的show table status相差很多)
我们可以通过一些简单地方法去拿到这个值,比如通过hadoop fs -du 来获取表占用的空间大小,通过hadoop fs -count获取表的文件数量,然后定期取值并load到数据库中。
在元数据库中,通过创建view来获取数据库,hdfs路径,表类型,存储格式等信息
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
CREATE
OR
REPLACE
VIEW
table_location_type
AS
SELECT
CONCAT_WS(
'.'
,a.
NAME
,b.TBL_NAME)
AS
db_table,SUBSTR(c.LOCATION,18)
AS
db_location,b.TBL_TYPE
AS
type,SUBSTRING_INDEX(c.INPUT_FORMAT,
'.'
, -1)
AS
IN_FOR
FROM
dbs a,tbls b,sds c
WHERE
a.DB_ID=b.DB_ID
AND
b.SD_ID=c.SD_ID;
数据如下:
select
*
from
table_location_type limit 5;
+
----------------------------------+---------------------------------------------------------+---------------+-------------------+
| db_table | db_location | type | IN_FOR |
+
----------------------------------+---------------------------------------------------------+---------------+-------------------+
| xxxx | /bip/hive_warehouse/cdnlog.db/dnion_log_origin | MANAGED_TABLE | TextInputFormat |
| xxxx | /bip/hive_warehouse/cdnlog.db/chinacache_log_origin | MANAGED_TABLE | TextInputFormat |
| xxxx | /bip/hive_warehouse/cdnlog.db/chinanetcenter_log_origin | MANAGED_TABLE | TextInputFormat |
| xxxxx | /bip/hive_warehouse/cdnlog.db/dnion_log | MANAGED_TABLE | RCFileInputFormat |
| xxxx | /bip/hive_warehouse/cdnlog.db/chinanetcenter_log | MANAGED_TABLE | RCFileInputFormat |
+
----------------------------------+---------------------------------------------------------+---------------+-------------------+
|
然后通过和我们自己收集的信息做join就可以获取相关的数据:
比如文件数量最多top 20
|
1
2
3
|
select
a.db_table
as
tb,round(b.
size
/(1024*1024*1024),2)
as
size
,c.
size
as
num,round(b.
size
/(c.
size
*1024*1024),2)
as
avg
,
a.type,a.in_for
from
table_location_type a,file_size b,file_num c
where
a.db_location=b.location
and
a.db_location=c.location
and
c.dt=
'20140325'
and
b.dt=
'20140325'
and
c.
size
> 0
and
b.
size
> 1000000000
order
by
c.
size
+0
desc
limit 20;
|
在实际的使用中,我们收集了文件数最多的表,占用空间最大的表,平均文件最小的表,并通过报表的形式方式处理,这样就可以简单了解到hive中表的一些信息,另外还会收集一些job的信息,比如job的map和reduce的数量,使用情况等,对job做详细的分析和优化。
报表如下:
本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1385603,如需转载请自行联系原作者
