本章目录

  1. 什么是Hbase
  2. hbase能做什么
  3. hbase架构设计
  4. 核心概念

1 什么是Hbase

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化和非结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase是一个高可靠性、高性能(快)面向列、可伸缩的分布式数据库系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化和非结构化数据存储集群。

     它介于nosql和RDBMS之间(nosql一般不存储结构化数据 ,hbase结构化和非结构化都存),仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive或者Phoenix支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化和结构化的松散数据。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

特点

1 海量存储

       Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。

2 列式存储

     这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。   

3 极易扩展

Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。

备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。

4 高并发

集群中对外服务的节点叫RegionServer(存储表的部分范围数据)

并发查询的时候 不同的机器节点对外服务  支持高并发

由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。

5 稀疏

稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

Hbase详细笔记一[简介] (附带讲解视频)

2 hbase能做什么

HBase擅长于存储结构简单的海量数据但索引能力有限,而Oracle等传统关系型数据库(RDBMS)能够提供丰富的查询能力,但却疲于应对TB级别的海量数据存储,HBase对传统的RDBMS并不是取代关系,而是一种补充。

存储结构化和非结构数据的分布式数据库 !

  • 将数据存储在不同的机器上 !
  • 利用不用机器来处理并发请求!!

不适合使用

需要数据分析,比如报表(rowkey) 对sql支持不好

单表数据不超过千万(200万)

适合使用HBASE

单表数据超过千万 ,并发量还很高

数据分析需求弱 ,或者不需要那么灵活和实时

注意:由于hbase对SQl的支持并不是很好 ,所以Hbase不适合做复杂的报表分析等场景 ,适合数据量非常大且报表统计维度并不是复杂的场景 ,比如标签化查询等!!!

 

3 hbase架构设计

Hbase详细笔记一[简介] (附带讲解视频)

Hbase详细笔记一[简介] (附带讲解视频)

client

  1. 提供了访问hbase的接口
  2. 提供cache提高访问hbase的效率 , 比如region的信息

zookeeper

  1. ü通过选举保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
  2. ü存贮所有Region的寻址入口:索引表-meta-所在服务器
  3. ü实时监控Regionserver的上线和下线信息。并实时通知给Master
  4. ü存储HBase的schema和table元数据

ü默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper,但一般我们不会让hbase自己管理一套zookeeper进程,而是让hbase使用我们外部的一个公共zookeeper集群 ,所以我们在安装的时候通常都会配置自己的ZK集群 .üZookeeper的引入使得Master不再有单点故障

HMaster

(分配数据到底存储在哪个regiserver中)

  1. ü为Region server分配region(数据)
  2. ü负责Region server的负载均衡
  3. ü发现失效的Regionserver并通过拆分LOG重新分配其上的region
  4. ü管理用户对table定义的各类DDL操作

HRegionServer

  1. 管理master为其分配的Region
  2. 处理来自客户端的读写请求
  3. 负责和底层HDFS的交互,存储数据到HDFS
  4. 负责Region变大以后的拆分
  5. 负责Storefile的合并工作
  6. 负载均衡的事情

4 核心概念

Hmaster: Hbase集群的主节点

HRegionServer: 管理Region的机器

Region:HBase中的数据都是按row-key进行排序的,对这些按row-key排序的数据进行水平切分,每一片称为一个Region,它有startkey和endkey,Region的大小可以配置,一台RegionServer中可以放多个Region,表的行范围数据抽象

namespace: 在hbase中没有数据库的概念 , 使用namespace来实现DB的作用

表: hbase中有表的概念 ,是一张非常大的表 ,可以几十亿行,上百万列

rowkey:行建 , 行的唯一标识,数据排序 ,查询索引等行建是hbase设计的关键

CF:列族。一个列族中的所有列存储在相同的HFile文件中

HFile:HFile就是Hadoop磁盘文件,一个列族中的数据保存在一个或多个HFile中,这些HFile是对列族的数据进行水平切分后得到的。

MemStore:HFile在内存中的体现。当我们update/delete/create时,会先写MemStore,写完后就给客户端response了,当Memstore达到一定大小后,会将其写入磁盘,保存为一个新的HFile。HBase后台会对多个HFile文件进行merge,合并成一个大的HFile

 

详解内容尽在原理加强篇

 

 

 

 

相关文章:

  • 2023-03-18
  • 2021-10-11
  • 2021-05-06
  • 2021-11-16
  • 2021-10-26
  • 2021-05-11
  • 2021-11-29
猜你喜欢
  • 2021-11-17
  • 2021-12-31
  • 2021-06-21
  • 2021-09-27
  • 2022-03-08
  • 2021-11-24
  • 2021-11-30
相关资源
相似解决方案