Hbase结构再探究

发布时间 2023-09-09 19:24:12作者: 突破铁皮

Hbase储存再hdfs上,这是hbase的具体文件夹

  1. .hbck:这是 HBase 的 hbase-hbck 工具生成的目录,用于存储修复 HBase 表的信息。hbase-hbck 工具用于检查和修复 HBase 表的一致性和完整性。

  2. .tmp:这是一个临时目录,通常用于临时存储数据或文件,以便后续处理。在 HBase 中,它可能用于一些临时数据的存储或操作。

  3. MasterData:这是 HBase Master 节点的数据目录,用于存储 Master 节点的状态信息和元数据。

  4. WALs:这是 Write-Ahead Logs(WALs)的缩写,用于存储 HBase 的编辑日志,记录了所有表的变更操作。这个目录存储了 HBase 中的持久化数据变更。

  5. archive:这是一个归档目录,可能用于存储过去的数据备份或归档数据。通常,这里存储了一些旧版本的数据。

  6. corrupt:这个目录通常用于存储损坏或不可用的数据块或文件。这些文件可能已损坏或发生错误,无法正常使用。

  7. data:这是 HBase 存储实际数据的目录,包含了 HBase 表的数据块和列簇。这是 HBase 中最重要的目录之一,存储了用户数据。

  8. hbase.id:这个文件包含了 HBase 实例的唯一标识符或ID。它用于标识 HBase 集群中的不同实例。

  9. hbase.version:这个文件包含了 HBase 版本的信息,包括版本号等。

  10. mobdir:这个目录通常与 HBase 的 MOB(Medium Object)存储相关,用于存储 MOB 类型的数据。MOB 是一种用于存储大型二进制对象的机制。

  11. oldWALs:这是旧的 Write-Ahead Logs(WALs)的存储目录,通常用于存储旧版本的编辑日志。

  12. staging:这是一个临时存储目录,通常用于执行一些临时操作或数据迁移。

data下面每个命名空间都是一个文件夹

其中上面两个是默认就有的,下面这个是我自定义的命名空间

每张表都是一个文件夹

.tabledesc:与 HBase 表的描述信息有关。通常,HBase 表的描述信息包括表的结构、列族信息、数据编码方式等。.tabledesc 包含了与表相关的元数据或描述数据。

下面则是具体数据

  1. .regioninfo

    .regioninfo 文件是 Apache HBase 中用于存储 HRegion 的元数据的文件。在 HBase 中,数据被划分为多个区域(regions),每个区域对应一个 .regioninfo 文件。这些区域文件实际上是存储在 HDFS(Hadoop分布式文件系统)上的,而不是本地文件系统。

    每个 .regioninfo 文件包含有关特定区域的元数据信息,这些信息包括但不限于:

    1. Region Name: 区域的唯一标识符,通常是一个哈希值。

    2. Start Key: 区域的起始键。

    3. End Key: 区域的结束键。

    4. Region ID: 区域的唯一标识符。

    5. Table Name: 区域所属的表的名称。

    6. Timestamp: 区域创建的时间戳。

    这些元数据信息对于 HBase 的区域分割和数据定位非常重要。HBase会根据这些信息来确定数据应该存储在哪个区域,以及如何进行区域的拆分和合并操作。

    .regioninfo 文件通常由 HBase 自动管理,用户不需要直接编辑或操作这些文件。这些文件位于 HBase 表的 .META. 表中,HBase Master 和 Region Servers 使用这些信息来协调数据的读取和写入操作。

  2. recovered.edits

    recovered.edits 是 Apache Hadoop HDFS(分布式文件系统)中的一个文件,通常与 HBase(基于 Hadoop 的分布式数据库)相关。它包含了 HBase 的编辑日志(edit log)的恢复部分。

    HBase 的编辑日志是一种记录了所有表的变更操作(如插入、更新、删除等)的日志。这个日志用于保证数据的一致性和持久性,以便在节点故障或其他故障发生时能够还原数据。

    recovered.edits 文件通常在 HBase 的数据目录中,用于存储在 HBase Master 启动或重新启动时,从编辑日志中恢复尚未持久化到 HFile(HBase存储文件)中的数据变更。这有助于确保在 Master 节点发生故障时,不会丢失尚未应用的数据变更。

    在 HBase 运行时,编辑日志和 recovered.edits 文件的管理是由 HBase 自动完成的,用户不需要直接处理这些文件。

  3. scoreteacher,info:是我自定义的列族,每个列族都是一个目录,而字段名和值都是储存在一个文件中,因此字段名和值都是离散的。

从上面的结构分析可以看出要想查找到一个值,必须从命名空间->表名->列族名,因为列是离散的因此hbase给出了rowkey来查找每一个cell,而不是关系型数据库中通过列名来查找值

这里可以看出列名和值为什么的离散化储存的