星环大数据组件hyperbase在hdfs上的目录结构分析
hyperbase和hbase一样,底层数据结构的存储依托于hdfs;今天我们对星环的大数据平台组件hyperbase在hdfs上的存储做一下简单的介绍;
TDH:
4.x系列 TDH4.9.2之后开始使用的版本是对应开源的1.3.1,之前版本对应的开源的0.98.6
5.x系列 TDH5.2.3之后开始使用的版本是对应开源的1.3.1,之前版本对应的开源的0.98.6
6.x系列 底层hbase对应开源1.3.1版本
1、/hyperbase1/.tmp
当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作。
2、/hyperbase1/WALs
大家都知道 hyperbase 是支持 WAL(Write Ahead Log) 的,hyperbase会在第一次启动之初会给每一台 RegionServer 在.log 下创建一个目录,若客户端如果开启WAL 模式,会先将数据写入一份到.log 下,当 RegionServer crash 或者目录达到一定大小,会开启 replay 模式,类似 MySQL 的 binlog。
3、/hyperbase1/archive
归档,hyperbase 在做 Split或者 compact 操作完成之后,会将 HFile 移到.archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。和0.94一样,只是去掉了.而已,估计是作者不想把它作为一个隐藏文件夹了吧
4、/hyperbase1/corrupt
存储hyperbase做损坏的日志文件,一般都是为空的。
5、/hyperbase1/data
这个才是 hyperbase的核心目录,0.98版本里支持 namespace 的概念模型,系统会预置两个 namespace 即:hbase和default
存储hyperbase中所有的数据,与hive中存储在HDFS上的data目录一样。
5.1 /hyperbase1/data/default
这个默认的namespace即没有指定namespace 的表都将会flush 到该目录下面。
5.2 /hyperbase1/data/hbase
这个namespace 下面存储了 hyperbase 的 namespace、meta 和acl 三个表,这里的 meta 表跟0.94版本的.META.是一样的,自0.96之后就已经将 ROOT 表去掉了,直接从Zookeeper 中找到meta 表的位置,然后通过 meta 表定位到 region。 namespace 中存储了 HBase 中的所有 namespace 信息,包括预置的hbase 和 default。acl 则是表的用户权限控制。
如果自定义一些 namespace 的话,就会再/hyperbase1/data 目录下新建一个 namespace 文件夹,该 namespace 下的表都将 flush 到该目录下。
6、/hyperbase1/hbase.id
它是一个文件,存储集群唯一的 cluster id 号,是一个 uuid。
7、/hbase/hbase.version
同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。
8、/hbase/oldWALs
这里对应0.94的.oldlogs 目录,取名为 oldWALs 是不是更好了呢!