根目录文件(Root-level files)

第一部分文件是被Hlog处理的write-ahead日志文件,这些日志文件被保存在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的目录结构的更多相关文章

  1. HBase 在HDFS上的物理目录结构

    根目录 配置项 hbase.rootdir 默认 "/hbase" 根级文件 /hbase/WALs 被HLog实例管理的WAL文件. /hbase/WALs/data-hbase ...

  2. 大数据每日干货第四天(linux基础之一目录结构与常用命令)

           为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...

  3. HBase HDFS目录树

    一.0.94-cdh4.2.1版本系统级别的一级目录如下,用户自定义的均在这个/hbase 下的一级子目录下/hbase/-ROOT-/hbase/.META./hbase/.archive/hbas ...

  4. ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

    和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...

  5. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  6. python基础-软件目录结构规范

    一.定义目录结构目的 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织规则 ...

  7. Eclipse中一个Maven工程的目录结构

    在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...

  8. linux -目录结构

    摘自:http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilestruct.html 这个目录结构介绍是我目前看到介绍最全的,有时间在翻译 ...

  9. Go 项目的目录结构 及 安装技巧

    项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...

随机推荐

  1. Java获取web项目路径

    File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...

  2. ExtJs GridPanel 给表格行或者单元格自定义样式

    Ext.onReady(function(){ Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'ema ...

  3. oracle sql生成日历表

    以下是生成2017年日历表: insert into dw_mdl.m_hadp_dim_date select to_char(everyDay,'yyyy-mm-dd') as dt, to_ch ...

  4. MySQL做为手动开启事务用法

    START TRANSACTION;INSERT INTO `t1` (t, t1) VALUES('124', NOW());ROLLBACK;COMMIT;

  5. python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。

    python三大神器之virtualenv   pip, virtualenv, fabric通称为pythoner的三大神器. virtualenv virtualenv------用来建立一个虚拟 ...

  6. cat /etc/init.d/nfs 这句话看不懂

    if status rpc.mountd > /dev/null ; then  exit 0 fi Linux非root用户程序使用小于1024端口   在Linux下,默认端口1024下的是 ...

  7. Aria2 懒人安装教程

    https://aria2.github.io/ uI版:https://github.com/ziahamza/webui-aria2 web的 可以在线使用的 https://ziahamza.g ...

  8. ggplot2学习

    R语言里面一个比较重要的绘图包——ggplot2,是由Hadley Wickham于2005年创建,于2012年四月进行了重大更新,作者目前的工作是重写代码,简化语法,方便用户开发和使用.ggplot ...

  9. 科普Spark,Spark核心是什么,如何使用Spark(1)

    科普Spark,Spark是什么,如何使用Spark(1)转自:http://www.aboutyun.com/thread-6849-1-1.html 阅读本文章可以带着下面问题:1.Spark基于 ...

  10. Spring Boot 官方文档学习(二)特点

    一.SpringApplication banner,就是启动时输出的信息,可以在classpath下添加 banner.txt,或者设置 banner.location 来指向特定的文件.(默认编码 ...