自0.96版本之后,hbase 源码结构上做了很大的优化,目录结构也发生了变化,做了精简和优化,这里以0.98.8为例介绍,目录如下:

/hbase/.tmp

/hbase/WALs

/hbase/archive

/hbase/corrupt

/hbase/data

/hbase/hbase.id

/hbase/hbase.version

/hbase/oldWALs

 

1、/hbase/.tmp

这个目录不变还是原来的tmp目录,作用是一样的。

2、/hbase/WALs

这里对应0.94的.logs 目录,取名为 WALs 更加见名知意了,点个赞!

3、/hbase/archive

和0.94一样,只是去掉了.而已,估计是作者不想把它作为一个隐藏文件夹了吧

4、/hbase/corrupt

和0.94一样,去了.

5、/hbase/data

这个才是 hbase 的核心目录,0.98版本里支持 namespace 的概念模型,系统会预置两个 namespace 即:hbase和default

5.1 /hbase/data/default

     这个默认的namespace即没有指定namespace 的表都将会flush 到该目录下面。

5.2 /hbase/data/hbase

     这个namespace 下面存储了 HBase 的 namespace、meta 和acl 三个表,这里的 meta 表跟0.94版本的.META.是一样的,自0.96之后就已经将 ROOT 表去掉了,直接从Zookeeper 中找到meta 表的位置,然后通过 meta 表定位到 region。 namespace 中存储了 HBase 中的所有 namespace 信息,包括预置的hbase 和 default。acl 则是表的用户权限控制。

     如果自定义一些 namespace 的话,就会再/hbase/data 目录下新建一个 namespace 文件夹,该 namespace 下的表都将 flush 到该目录下。

6、/hbase/hbase.id

     它是一个文件,存储集群唯一的 cluster id 号,是一个 uuid。

7、/hbase/hbase.version

     同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。

8、/hbase/oldWALs

这里对应0.94的.oldlogs 目录,取名为 oldWALs 是不是更好了呢!