海量数据存储技术之HBase:HBase在HDFS上的目录及文件简介

HBase在HDFS上的目录及文件简介

我们使用HUE可以查看HDFS上的文件,使用HDFS NameNode Web UI也可以查看,下面我们使用NameNode Web UI看看。

下面是NameNode Web UI,点击Utilities可以看到HDFS上都有哪些文件。

那么,和HBase相关的文件在哪呢?

注意,名称为hbase的目录,所有与HBase相关的文件都存储在此目录下。/hbase这个目录可以通过配置hbase.rootdir更改,默认是/hbase。让我们展开目录看看,如下图:

我们可以看到只有两个文件hbase.id和hbase.version(Permission的第一位是-,它表示普通文件),其余都是目录(Permission的第一位是d,它表示目录)。下面按照上图的顺序依次介绍一下。

1)/hbase/.hbck

当遇到元数据不一致时,使用hbck 工具修复,修复过程中会使用该目录作为临时目录。

但是对于HBase2.0.0及其以后版本这个工具已经不能用来修复HBase了,要使用hbck2。

2) /hbase/.tmp

当创建或删除表时,会将表移动到该此目录下,然后再处理。

3) /hbase/MasterProcWALs

此目录下包含HMaster主节点状态日志文件。

可以在停止服务后删除这个目录,然后重启HBase,这个目录会自动被创建。

4)/hbase/WALs

HBase 是支持WAL(Write Ahead Log)的,HBase会在第一次启动之初会在每一个RegionServer的.log目录下创建一个目录,若客户端开启WAL模式,会先将数据写入一份到.log下,当 RegionServer crash或目录达到一定大小,会开启 replay模式,这类似 MySQL的binlog。

5)/hbase/archive

HBase在完成Split或者compact操作之后,会将HFile移到.archive目录中,然后将之前的hfile删除掉,该目录由HMaster上的一个定时任务定期清理。

6)/hbase/corrupt

存储HBase损坏的日志文件,一般都是为空的。

7)/hbase/data

/hbase/data目录是最重要的目录,存储hbase数据,下面含有两个命名空间default和hbase,其中default是默认命名空间,如果创建的表未指定命名空间,将存放在该命名空间下,hbase是系统命名空间。

/hbase/data/acl

其中

.tabledesc表示表的元数据信息。

.tmp表示临时数据,当表被更新时会使用这个目录。

fcd3a7a6e8fe7e3a55d2aa76b53dfdcb,这是region的名称,它是由表名+Start Key+时间戳产生的哈希码。此目录包含子目录,如下图所示。

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/ .regioninfo文件是对应Region的HRegionInfo的序列化信息。

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/.tmp临时文件

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/l列族的数据文件

/hbase/data/hbase/acl/fcd3a7a6e8fe7e3a55d2aa76b53dfdcb/recovered.edits为Region拆分时的临时数据

这个文件对应的表名为hbase:acl,我们查下这个表看看都存些什么:

记录了我们自定义的表信息,并分配了相应的权限,其中value=RWXCA表示READ(读), WRITE(写), EXEC(执行), CREATE(创建), ADMIN(管理员权限)。

/hbase/data/meta

这个文件对应的表名为hbase:meta,我们查下这个表看看都存些什么:

这个表记录了所有HBase表的元数据。

/hbase/data/namespace

这个文件对应的表名为hbase:namespace,我们查下这个表看看都存些什么:

这个表记录了命名空间。

自定义命名空间

除了这两个命名空间以外,如果你指定一个命名空间,那么会在/hbase/data创建一个目录,用来放表文件。

例如,指定命名空间为article,那么当前/hbase/data目录如下所示:

我们看看/hbase/data/article这个目录下都有哪些文件,首先要说明的是我创建了一个表名称为CCND,命名空间为article。表有一个列族i,和两列h和c。

其中

l /hbase/data/article/CCND/.tabledesc存放表元数据信息,用HUE打开可以看到如下信息:

l /hbase/data/article/CCND/.tmp存放临时文件

l /hbase/data/article/CCND/1bff78545728ab01c7646a79de4ce00d存放表数据,

让我们看看这个目录下的文件。

8)/hbase/mobdir

此目录对应MOB文件。

9)/hbase/oldWALs

与hbase操作相关的旧日志存放目录.当/hbase/WALs中的HLog文件被持久化到存储文件中,不再需要日志文件时,它们会被移动到/hbase/oldWALs目录。

删掉此目录后,重启HBase会自动创建这个目录。

10)/hbase/staging

在bulkload时会创建并使用这个文件夹,通过查看官方文档可以证实这一点,原文如下:

11)/hbase/hbase.id

它是一个文件,存储集群唯一的cluster id号,是一个uuid。使用HUE打开这个文件,让我们看看具体内容:

12)/hbase/hbase.version

它是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来,这里我们使用HUE看一下:

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();