有趣生活

当前位置:首页>科技>安装分布式数据库hbase实验报告列式存储的分布式数据库

安装分布式数据库hbase实验报告列式存储的分布式数据库

发布时间:2026-07-21阅读(1)

导读一、概述Hbase是一个面向列式存储的分布式数据库,其设计思想来源于Google的BigTable论文。HBase底层存储基于HDFS实现,集群的管理基于Z....一、概述

Hbase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 Zookeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。

官方文档:https://hbase.apache.org/book.htmlGitHub地址:https://github.com/apache/hbase

HBase特点:

  • 易扩展:Hbase 的扩展性主要体现在两个方面,一个是基于运算能力(RegionServer) 的扩展,通过增加 RegionSever 节点的数量,提升 Hbase 上层的处理能力;另一个是基于存储能力的扩展(HDFS),通过增加 DataNode 节点数量对存储层的进行扩容,提升 HBase 的数据存储能力。
  • 海量存储:HBase 作为一个开源的分布式 Key-Value 数据库,其主要作用是面向 PB 级别数据的实时入库和快速随机访问。这主要源于上述易扩展的特点,使得 HBase 通过扩展来存储海量的数据。
  • 列式存储:Hbase 是根据列族来存储数据的。列族下面可以有非常多的列。列式存储的最大好处就是,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。
  • 高可靠性:WAL 机制保证了数据写入时不会因集群异常而导致写入数据丢失,Replication 机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且 Hbase 底层使用 HDFS,HDFS 本身也有备份。
  • 稀疏性:在 HBase 的列族中,可以指定任意多的列,为空的列不占用存储空间,表可以设计得非常稀疏。
二、Hbase的优缺点1)Hbase优点
  • 列的可以动态增加,并且列为空就不存储数据,节省存储空间.
  • Hbase自动切分数据,使得数据存储自动具有水平scalability.
  • Hbase可以提供高并发读写操作的支持
2)Hbase缺点
  • 不能支持条件查询,只支持按照Row key来查询.
  • 暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.
三、HBase数据模型

HBase是运行在Hadoop集群上的一个数据库,与传统的数据库有严格的ACID(原子性、一致性、隔离性、持久性)要求不一样,HBase降低了这些要求从而获得更好的扩展性,它更适合存储一些非结构化和半结构化的数据。

1)逻辑模型

  • 表命名空间(Namespace):表命名空间不是强制的,当想把多个表分到一个组去统一管理的时候才会用到表命名空间;
  • 表(Table):Hbase采用表来组织数据;一个表由一个或多个列族组成。数据属性,比如超时时间(TTL)、压缩算法(COMPRESSION)等,都在列族的定义中定义。
  • 行(Row):一个行包含多个列,这些列通过列族来分类。行中数据所属列族只能只能从该表所定义的列族选择,否则会得到一个NoSuchColumnFamilyException。由于HBase是一个列式数据库,所以一个行中的数据可以分布在不同的RegionServer上。
  • 列标识(Column Qualifier):多个列组成一个行。列族和列经常用Column
  • 列族(Column Family):一个table有许多个列族,列族是列的集合,属于表结构,也是表的基本访问控制单元。
  • Column Family:Column Qualifier形式标识;
  • 时间戳(Timestamp):用来区分数据的不同版本;
  • 单元格(Cell):通过行、列族、列、时间戳可以确定一个单元格,存储的数据没有数据类型,是字节数组byte[]。

以上几个概念以及它们之间的关系可以用下图表示:

2)物理模型

实际存储方式:每个Region由多个Store构成,每个Store保存一个column family。

  • 逻辑数据模型中空白cell在物理上是不存储的,因此若一个请求为要获取t8时间的contents:html,他的结果就是空。相似的,若请求为获取t9时间的anchor:my.look.ca,结果也是空。但是,如果不指明时间,将会返回最新时间的行,每个最新的都会返回。
  • 在一个HBase中,存储了很多HBase表,当表中包含的行数量非常庞大,无法在一台机器上存储时,需要分布存储到多台机器上,需要根据行键的值对表中进行分区,每个行分区被称为“Region”
  • Master主服务器把不同的Region分配到不同的Region服务器上,同一个Region不会拆分到多个Region服务器上,每个Region服务器负责管理一个Region集合,通常每个Region服务器上会放置10~1000个Region。

四、HBase 架构与原理

1)HBase读流程

2)HBase写流程

数据flush过程

  • 当MemStore数据达到阈值(默认是128M,老版本是64M),将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的历史数据;
  • 并将数据存储到HDFS中;

数据合并过程

  • 当数据块达到4块,Hmaster将数据块加载到本地,进行合并;
  • 当合并的数据超过256M,进行拆分,将拆分后的Region分配给不同的Hregionserver管理;
  • 当HregionServer宕机后,将HregionServer上的hlog拆分,然后分配给不同的HregionServer加载,修改.META.;

【温馨提示】HLog会同步到HDFS。

五、环境部署(全分布模式)

HBase有三种运行模式:

  • 单机模式:只在一台计算机运行,这种模式下,HBase所有进程包括Maste、HRegionServer、和Zookeeper都在同一个JVM中运行,存储机制采用本地文件系统,没有采用分布式文件系统HDFS。
  • 伪分布模式:只在一台计算机运行,这种模式下,HBase所有进程都运行在不同一个节点,在一个节点上模拟了一个具有HBase完整功能的微型集群,存储机制采用分布式文件系统HDFS,但是HDFS的NameNode和DataNode都位于同一台计算机上。
  • 全分布模式:在多台计算机上运行,这种模式下,HBase的守护进程运行在多个节点上,形成一个真正意义上的集群,存储机制采用分布式文件系统HDFS,且HDFS的namenode和DataNode位于不同计算机上。
1)环境准备

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图