您的位置:首页 > 其它

Trafodion 表重命名后查看占用空间

2017-06-27 12:23 337 查看
今天遇到一个问题—Trafodion中的表在重命名(rename)之后从HDFS上面看不到表实际占用的空间了,或者说从HDFS上查看到的表的实际空间数据是不正确的。

鉴于此,自己找了一台环境试验了一下,果真如此,下面是试验的步骤。

1 从HDFS中查看一个原始表占用空间

[trafodion@esg08 ~]$ hadoop fs -du -h -s /hbase/data/default/TRAFODION.TJ.RYXX
12.2 G  36.6 G  /hbase/data/default/TRAFODION.TJ.RYXX


2 从Trafodion中将表重命名

>>alter table RYXX rename to RYXX_NEW;

--- SQL operation complete.


3 从HDFS中查看重命名后表占用空间

[trafodion@esg08 ~]$ hadoop fs -du -h -s /hbase/data/default/TRAFODION.TJ.RYXX_NEW
1.8 K  5.5 K  /hbase/data/default/TRAFODION.TJ.RYXX_NEW


通过以下结果发现,重命名之后,HDFS实际的目录空间并不像我们想象的那样,即新表的目录空间和原始表的目录空间一样大,查看新的目录详细内容如下,

[trafodion@esg08 ~]$ hadoop fs -ls /hbase/data/default/TRAFODION.TJ.RYXX_NEW
Found 10 items
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/.tabledesc
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/.tmp
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/05c7c38ba2a1dd15184bf0eafd0ba281
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/189da5e700bcdf605b0f5f57e09753dd
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/4ddf9cf991493e15dd262b0856f3c8ac
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/561297e5d73464d38ce7f40a0bdfb51d
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/8356d420d1427e462d5b920232a7db36
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/b876c2031be6c1042a592b4b2576f072
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/eb44f37385e75b9720da42a12c8ba1f6
drwxrwxr-x   - hbase hbase          0 2017-06-27 11:24 /hbase/data/default/TRAFODION.TJ.RYXX_NEW/fef99570b311e511d8ae4460aab12be5


实际证明,原始表的实际数据文件并不会真正转移到新目录下,而是转移到/hbase/archive目录下,

[trafodion@esg08 ~]$ hadoop fs -du -h /hbase/archive/data/default
12.2 G  36.6 G  /hbase/archive/data/default/TRAFODION.TJ.RYXX


因此,如果希望查看rename后表的占用空间,需要去/hbase/archive目录下去找到原始文件占用的空间。

以下是HBase的archive目录的含义,

### /hbase/archive/
存储表的归档和快照,HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。
存储表的归档和快照具体目录:
/hbase/archive/data/default/表名/region名/列族名/fd2221d8d1ae4e579c21882f0ec4c5a5


以下是HBase层表重命名的具体方式,

hbase shell> disable 'tablea'
hbase shell> snapshot 'tablea', 'tableaSnapshot'
hbase shell> clone_snapshot 'tableaSnapshot', 'tablea_newname'
hbase shell> delete_snapshot 'tableaSnapshot'
hbase shell> drop 'tablea'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: