HBase HDFS目录树
一、0.94-cdh4.2.1版本
系统级别的一级目录如下,用户自定义的均在这个/hbase 下的一级子目录下
/hbase/-ROOT-
/hbase/.META.
/hbase/.archive
/hbase/.corrupt
/hbase/.hbck
/hbase/.logs
/hbase/.oldlogs
/hbase/.snapshot
/hbase/.tmp
/hbase/hbase.id
/hbase/hbase.version
1、/hbase/-ROOT-
hbase读写数据的时候采用三级寻址方式,首先找到从 zk 中找到ROOT 表所在位置,通过 ROOT 表找到 META 表所在位置,然后再从 META 表定位到你要读写数据Region 所在的Regionserver。所以-ROOT-目录对应 HBase 中的系统表ROOT,就不多做解释了。
2、/hbase/.META.
就是存储1中介绍的 META 表的存储路径。
3、/hbase/.archive
HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到.archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。
4、/hbase/.corrupt
存储HBase做损坏的日志文件,一般都是为空的。
5、/hbase/.hbck
HBase 运维过程中偶尔会遇到元数据不一致的情况,这时候会用到提供的 hbck 工具去修复,修复过程中会使用该目录作为临时过度缓冲。
6、/hbase/.logs
大家都知道 HBase 是支持 WAL(Write Ahead Log) 的,HBase 会在第一次启动之初会给每一台 RegionServer 在.log 下创建一个目录,若客户端如果开启WAL 模式,会先将数据写入一份到.log 下,当 RegionServer crash 或者目录达到一定大小,会开启 replay 模式,类似 MySQL 的 binlog。
7、/hbase/.oldlogs
当.logs 文件夹中的 HLog 没用之后会 move 到.oldlogs 中,HMaster 会定期去清理。
8、/hbase/.snapshot
hbase若开启了 snapshot 功能之后,对某一个用户表建立一个 snapshot 之后,snapshot 都存储在该目录下,如对表test 做了一个 名为sp_test 的snapshot,就会在/hbase/.snapshot/目录下创建一个sp_test 文件夹,snapshot 之后的所有写入都是记录在这个 snapshot 之上。
9、/hbase/.tmp
当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作。
10、/hbase/hbase.id
它是一个文件,存储集群唯一的 cluster id 号,是一个 uuid。
11、/hbase/hbase.version
同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。
二、0.98.8版本
自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 目录
第一部分文件是被Hlog处理的write-ahead日志文件,这些日志文件被保存在http://www.aliyun.com/zixun/aggregation/13713.html">HBase根目录下的.logs文件夹。.logs目录下面为每一个HRegionServer单独创建一个文件夹,每一个文件夹下有几个HLog文件(因为log rotation)。每一个HRegionServer的所有region都共享一个HLog文件。
当一个日志文件不再需要时(因为其包含的“编辑信息”都已经持久化保存到store files),该日志文件会被保存到数据库根目录下.oldlogs文件夹。.oldlogs目录下的文件在10分钟后会被master删除(该时间可以由hbase.master.logcleaner.ttl参数设置)。Master会每隔一分钟(该时间可以由hbase.master.cleaner.interval参数设置)检查这些旧日志文件。
第二部分文件是hbase.id和hbase.version文件,hbase.id记录了集群的唯一标识;hbase.version记录了文件格式的版本号。
第三部分,随着时间的增长,在根目录下 还会产生一些其他目录。split和.corrupt目录在日志 分裂过程中使用,以便保存一些中间结果和损坏的日志。
表级文件(Table-level files)
HBase的每一张表在根目录下 都有一个单独的文件夹(在这里我们称为表目录)。在表目录下有一个命名为.tableinfo的文件,该文件保存了该表所对应的已经序列化的HTableDescriptor。HTableDescriptor包含了表和column family模式。除了.tableinfo之外,还有.tmp目录。.tmp目录有很多作用,举例来说,需要在.tableinfo更新过程中被使用。
域级文件(Region-level files)
在表目录下,为该表的每一个region单独创建一个目录,目录的名字为region name的MD5哈希值。整个的目录结构 如下所示:
/<hbase-root-dir>/<tablename>/<encoded-regionname>/<column-family>/<filename>
在每一个column-family目录下保存着真正的数据文件。这些数据文件以随机数来命名,由Java内置的随机数生成器产生。HBase程序非常智能,可以发现随机数重复,以 防止命名重复;直到找到未使用的随机数为止。
region目录包含.regioninfo文件,该文件包含了该region所对应的HRegionInfo所对应的 经过序列化的信息。除了该文件之外,还有一个可选的目录.tmp会随着需求的出现被创建, 例如在合并过程中重写文件。
HBase HDFS目录树的更多相关文章
- HBase 在HDFS 上的目录树
总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...
- HBase在HDFS上的目录树
众所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树: 一.0.94-cdh4.2.1版本 系统级别的一 ...
- Hbase 目录树
转自 http://www.cnblogs.com/nexiyi/p/hbase_on_hdfs_directory.html 总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系 ...
- 读取hdfs目录,并在web页面上展示文件里的内容
最终效果图 目录树实体类: /** * @Author: DaleyZou * @Description: hdfs 目录结构的实体类,用于展示目录树的支撑操作 * @Date: Created in ...
- 【.net 深呼吸】将目录树转化为文本
大伙都知道,文件系统是树形结构的,有时候我们会想到把目录的层次结构变为纯文本形式,就像这样: ├─Windows-universal-samples-master │ ├─Samples │ │ ├─ ...
- python 小程序 复制目录树
1. 将一个目录树完全复制到另外一个目录下面 import os, sys """ 复制目录树 """ maxloadsize = 1024 ...
- vs切换当前编辑文件时自动定位目录树
在编辑区,切换当前编辑文件时(单击.cpp或.h文件选项卡),"解决方案资源管理器"目录树会自动定位当前编辑的文件,并以灰色标识,当一个解决方案中的工程数目数目很多,每个工程下面又 ...
- 14.KVM安装之脚本和镜像目录树准备
1.php脚本需要先安装PHP环境,Apache服务器必须支持PHP $ yum install -y php #安装PHP $ php -v #查看是 ...
- 完整学习git三 查看暂存区目录树 git diff
1显示暂存区中的目录树 git ls-files git ls-tree git diff 魔法 1工作区与暂存区比较 git diff 2工作区与HEAD比较 git diff HEAD 3暂存区与 ...
随机推荐
- 实现listview中checkbox的多选与记录
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- js:语言精髓笔记7----原型继承
面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...
- POJ1845 Sumdiv(求所有因数和+矩阵快速幂)
题目问$A^B$的所有因数和. 根据唯一分解定理将A进行因式分解可得:A = p1^a1 * p2^a2 * p3^a3 * pn^an.A^B=p1^(a1*B)*p2^(a2*B)*...*pn^ ...
- LightOJ1316 A Wedding Party(状压DP)
这题事实上只需要关心15个商店和一个起点一个终点,预处理出这几个点之间的最短距离.Floyd会超时,用Dijkstra即可. 然后就是dp[u][S]表示已经经过商店集合S且当前在第u个商店所花的最少 ...
- 寒冰王座[HDU1248]
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- centos 安装网络错误
yum install vnc-server 提示安装成功 rpm -q vnc-server 返回 package vnc-server is not installed 然而再重新安装时 yu ...
- 【BZOJ】1043: [HAOI2008]下落的圆盘(计算几何基础+贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1043 唯一让我不会的就是怎么求圆的周长并QAAQ... 然后发现好神!我们可以将圆弧变成$[0, 2 ...
- 【BZOJ】1601: [Usaco2008 Oct]灌水(kruskal)
http://www.lydsy.com/JudgeOnline/problem.php?id=1601 很水的题,但是一开始我看成最短路了T_T 果断错. 我们想,要求连通,对,连通!连通的价值最小 ...
- 【TYVJ】1338 QQ农场(最大流+最大权闭合图)
http://tyvj.cn/Problem_Show.aspx?id=1338 时间才排到rank7,还不快啊囧.isap我常数都写得那么小了... 最大权闭合图看我另一篇博文吧 此题很明显的模型. ...
- lightning mdb 源代码分析(2)
本系列前一篇已经分析了lightningmdb的整体架构和主要的数据结构.本文将介绍一下MMAP原理以及lmdb中如何使用它. 1. Memory Map原理 内存映射文件与虚拟内存有些类似,通过内存 ...