Hbase学习笔记(一)——基本介绍

Hbase——基本介绍

  • 一、HBase简介
    • 1. 定义
    • 2. 数据模型
  • 二、HBase特征简要
  • 三、HBase的基础架构
    • 1. HMaster
    • 2. RegionServer
    • 3. 其他组件

一、HBase简介

官网

hbase.apache.org

1. 定义

Hbase是一种分布式的、基于内存、支持海量数据存储、面向列存储的NoSQL数据库。

2. 数据模型

逻辑上,Hbase的数据模型同关系型数据库很相似,数据存储在一张表中,有行有列。但从Hbase的底层物理存储结构(K-V)来看,Hbase更像是一个multi-dimensional map。

二、HBase特征简要

  • 海量存储
    Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。
  • 列式存储
    这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。
  • 极易扩展
    Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
    通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
    备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
  • 高并发
    由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
  • 稀疏
    稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

三、HBase的基础架构

Hbase学习笔记(一)——基本介绍_第1张图片

1. HMaster

  • 监控RegionServer
  • 处理RegionServer故障转移
  • 处理元数据的变更
  • 处理region的分配或移除
  • 在空闲时间进行数据的负载均衡
  • 通过Zookeeper发布自己的位置给客户端

2. RegionServer

  • 负责存储HBase的实际数据
  • 处理分配给它的Region
  • 刷新缓存到HDFS
  • 维护HLog
  • 执行压缩
  • 负责处理Region分片

3. 其他组件

  • HRegion
    Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
  • Write-Ahead logs
    HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
  • HFile
    这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。
  • Store
    HFile存储在Store中,一个Store对应HBase表中的一个列族。
  • MemStore
    顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。

你可能感兴趣的:(Hbase)