HBase的存储分为Table,region,store,MemStore,StoreFile,HFile。下面分别讲
TABLE
HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(Column family),一行由RowKey 时间戳,若干个列组成。除了rowkey和时间戳外,其他的列称为列族,他的命名有一定的规范。
rowKey就像关系数据库的主键,用来检索记录。table中所有的记录按rowkey来排序,访问hbase表的记录有三种方式,分别是
1 通过单个row key访问
2 通过row key的range
3 全表扫描
时间戳:用来区分同一份数据的版本。并且按顺序排序,每次查询都将返回最新版本的数据。
Region
table由region组成,刚开始table就一个region,随着table中的数据增大,到大到一定程度时,hbase会将region切分为两个相等大小的region, region是分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上。相同的region不能拆分。
Store
region是分布式的最小单元,单不是存储的最小单元,每一个region有一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面,即为每个ColumnFamily建一个store,也说明一个store保存一个ColumnFamily。也说明如果有几个ColumnFamily,也就有几个Store。一个Store由一个memStore和0或者多个StoreFile组成。
MemStore
memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStore的flush操作。
StoreFile
memStore内存中的数据写到文件后就是StoreFile,StoreFile是一HFile的格式保存。
HFile
HFile是HBase的存储格式。是键值对的格式,键值对都是字节数组。HFile除了存储键值对,还需要存储键值对的索引信息,主要包含六个部分。
Data Block 段–保存表中的数据,这部分可以被压缩
Meta Block 段 (可选的)–保存用户自定义的kv对,可以被压缩。
File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。
Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。
Meta Block Index段 (可选的)–Meta Block的索引。
Trailer– 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰。
HFile的Data Block,Meta Block通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。
相关推荐
【HBase基本概念】 ...总结来说,HBase作为NoSQL数据库,以其特有的列式存储、高扩展性和高可用性,成为处理大规模结构化数据的理想选择。理解和熟练运用HBase,对于大数据开发者和架构师来说至关重要。
【标题】"Hadoop之HBase学习笔记"主要聚焦于Hadoop生态中的分布式数据库HBase。HBase是一个基于Google Bigtable理念设计的开源NoSQL数据库,它运行在Hadoop之上,提供高性能、高可靠性以及可水平扩展的数据存储能力...
HBase的数据模型在源码中主要体现在`org.apache.hadoop.hbase.regionserver`包下的`Region`类,它是实际存储数据的单元,包含对行、列的管理。 3.2 操作API 客户端与HBase交互的API在`org.apache.hadoop.hbase....
1. 数据模型:Hbase采用行键(Row Key)、列族(Column Family)、列(Qualifier)、时间戳四元组来组织数据,这种模式适合稀疏、多维度的数据存储。 2. 数据分布:Hbase的数据分布在HDFS上,通过行键进行分区,...
4. **Hive学习笔记.pdf**:Hive的学习笔记通常会涵盖HQL(Hive Query Language)、表的创建与管理、数据加载与查询优化等内容,适用于数据分析人员。 5. **分布式并行数据库集群在海量数据处理上的应用.pdf**:这份...
这个“Hadoop学习笔记”涵盖了Hadoop生态系统中的核心组件,包括HDFS(Hadoop分布式文件系统)、HBase(一个分布式、列式存储的数据库)、Hive(数据仓库工具)以及Spark(一个快速、通用且可扩展的数据处理引擎)。...
通过学习HBase,我们可以更好地理解和掌握分布式大数据存储的原理,提高处理海量数据的效率。这份"Hbase相关的笔记"很可能包含了关于HBase的基础概念、架构、操作和优化等内容,是深入学习HBase的好资源。
5. **hbase存储结构.png** 和 **hbase存储结构.png** - 可能是关于HBase在HDFS上的物理存储方式,包括HFile和HLog的格式,以及如何进行数据压缩和分布。 6. **第六天-HBase.ppt** - 这个PPT很可能是课程的主要内容...
HBase的数据模型由表、行键(Row Key)、列族(Column Family)和列(Qualifier)组成。设计良好的行键能够帮助我们快速定位数据,而列族和列则用于组织和存储具体的数据。在SpringBoot中,我们可以通过定义实体类并...
### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...
HBase通常用于存储非结构化的和半结构化的数据,例如日志数据、传感器数据等。它的核心特性包括行键、列族、时间戳和版本,这些元素使得HBase在大数据领域中独具优势。文档可能涵盖了HBase如何与Hadoop生态系统集成...
文档型数据库以文档形式存储数据,通常存储为JSON、XML等格式,适合于存储半结构化数据,查询效率较键值存储更高。代表产品有MongoDB、CouchDB、MongoDb(4.x)、国内开源的SequoiaDB等。 图形数据库通过灵活的图形...
它们会介绍HBase的设计理念、架构、表模型、数据存储、数据读写机制以及如何进行数据查询。此外,还会讨论HBase与Hadoop的关系,以及如何在大数据环境中部署和管理HBase集群。 "图画.png"可能是对HBase架构或者工作...
集合是Java编程中不可或缺的一部分,...这些学习笔记涵盖了Java开发、分布式系统、大数据处理和实时流计算等多个领域,是提升技术能力的好资源。通过深入学习和实践,你可以构建扎实的技术基础,适应不断变化的IT环境。
大数据技术原理的学习是理解现代信息技术的关键部分,它涵盖了数据的收集、存储、处理和分析等多个环节。本笔记基于林子雨老师在MOOC上的《大数据技术原理》课程,旨在为IT从业者和大学生提供一个全面了解大数据的...
大数据学习笔记.zip是一个压缩包,其中包含了关于大数据技术的学习资料,特别是聚焦于Hadoop、HBase、Kafka和Flume这四个重要组件。这些技术都是大数据处理和分析领域中的核心工具,广泛应用于海量数据的存储、实时...
大数据技术学习笔记1涵盖了大数据技术的基本概念、Hadoop 生态系统、MapReduce 算法、Spark 框架、分布式计算平台、NoSQL 数据库、数据处理、数据挖掘等多个方面,能够帮助读者更好地理解大数据技术的基本概念和应用...
它特别适合于存储非结构化和半结构化数据,并且能够存储和运行在廉价硬件之上。Hadoop具有高可靠性、高扩展性和高吞吐率的特点,因此它成为了处理大数据的理想平台。 Hadoop的核心组成部分包括: 1. HDFS(Hadoop ...
### Hadoop数据分析平台学习笔记 #### 一、Hadoop概述 **Hadoop**是一个开源软件框架,用于分布式存储和处理大型数据集。它的设计灵感来源于Google的论文,其中包括Google文件系统(GFS)和MapReduce计算模型。...