HBase 简介

HBase 简介

  • HBase - Hadoop Database,是一个高可用、高性能、面向列、可伸缩、实时读写的分布式数据库

  • 利用Hadoop HDFS 作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务

  • 主要用来存储非结构化和半结构化的松散数据(列存NoSQL数据库)

HBase数据模型,表结构

HBase 简介

  • Row Key:判断表中的数据是不是同一行,看row key的值是不是相同

  • Time Stamp:时间戳,使用来描述数据的版本(hbase 的数据存储在hdfs上,不适合修改,为了解决修改问题,用时间戳来记录版本,修改实际上是新增了新的版本)

  • CF:列族,是列的家族,一个列族下有很多个列

  • HBase 中的有用的数据都是存储在列族中,把同一列族里面的数据存储在同一目录下,有几个文件保存。

HBase 体系结构

HBase 简介

  • HBase 工作模式是 一主多从的结构,主节点HMaster ,从节点HRegionServer ,Zookeeper提供高可用服务,解决单点故障,客户端访问HBase由Zookeeper分配HMaster

  • Client:包含访问HBase的接口并维护chche来加快对HBase的访问

  • Zookeeper:保证任何时候,集群中只有一个HMaster,存储所有的Region的寻址入口实时监控Region Server的上线和下线信息,并实时通知HMaster,存储HBase的schema和table元数据

  • Region : HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面的某段连续的数据,每个表一开始只有一个region,随着数据不断插入到表,region 不断增大到一个阀值的时候,region就会等分会两个新饿region(裂变),当table中的行不断增多,就会有越来越多的region,这样一张完整的表就会被保存在多个Region Server上。

Memstore 与 storefile

  • 一个region由多个store组成,一个store 对应一个CF(列族)
  • store包含位于内容中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阀值,hregionServer会启动flashcache
    进程写入storefile,每次形成单独的一个storefile,
  • 当storefiel文件增长到一个阀值,系统会进行合并(minor,major,compaction) 在合并的过程中会对版本合并和删除工作(major) 形成更大的storefile
    当一个region所有的storefile的大小和超过一定阀值后,会把当前的region分割为两个,并有hmaster分配到对应的regionserver服务器上,实现负载均衡
  • 客户端检索数据,先在memstore找,找不到再找storefile。

  • HRegion 是HBase中分布式存储和负载均衡的最小单元,最小单元就表示不同的HRegion 可以分布在不同的 HRegion server上

  • HRegion 由一个或者多个store组成,每个store保存一个columns family.
  • 每个store又由一个memstore和0至多个storefile组成,如图:StoreFile以HFile格式保存在HDFS上

HBase 简介

HBbase数据库模型

HBase 简介