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

de3100f0222b76954ef3e9a2b0f69632.png

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

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

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

7815b48520354819321d12ccac78a9b6.png
483941584f9725bf384aa2186905ef08.png

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

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

aba9dd94a8d3d5ce3291932626c42997.png

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

1)/hbase/.hbck

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

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

2) /hbase/.tmp

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

3) /hbase/MasterProcWALs

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

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

8e6cc1754cff09f478b5cb2a7fb030d6.png

4)/hbase/WALs

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

d907e2aa758746c827631543bc0cdb8e.png

5)/hbase/archive

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

6)/hbase/corrupt

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

7)/hbase/data

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

f13822f84c20ea54ce055b98bb5d45b1.png

/hbase/data/acl

0c35ab88df96524a67c511e34e2d984a.png

其中

.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拆分时的临时数据

0ef4a27eeb6fe30c2bd8ec55d6304019.png

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

51da0ac0041a7ae83f5b9ac0904ef02b.png

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

/hbase/data/meta

105ad2952e14ece517dec975dc6793e6.png

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

bbbc6a2787d19cc9d30f69313c411e40.png

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

/hbase/data/namespace

0bed940cb0064509dc9b3210dd98216f.png

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

f8af84efb0b58013c2d65970aadd15cf.png

这个表记录了命名空间。

自定义命名空间

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

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

a3e8413f38ce4a09f1c7ec766c5cd6a6.png

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

9a8fb8771a43f9bcd41af7bb09e6b305.png
f6b2d67eaf7e155ad24706378b14c982.png

其中

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

68a2aa9c68e7cbe259d40ec0501fdce0.png

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

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

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

148bc9fe8260b63093c54530dc3fe8f5.png

8)/hbase/mobdir

此目录对应MOB文件。

9)/hbase/oldWALs

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

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

ca018de062c3d28a7093a30b261f5f85.png

10)/hbase/staging

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

cb6a4c81c08048e1931137fa44e04301.png

11)/hbase/hbase.id

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

6b8dc3ee7c934f272f155f9e2c73575f.png

12)/hbase/hbase.version

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

757d4bf3f25c43b54a4b256914065d37.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值