HBase简介
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,NoSQL数据库
HBase数据模型之逻辑结构
- 表的主键(Row Key),按照字典序排序,且是唯一的存在。
- 新建table的时候 只需要创建列族,不同的列族放在HDFS中不同的文件夹存储,列是put中动态添加的
- region为一张表的切片,按数据量和Row Key水平方向切割
- 版本用时间戳timestamp来表示
- cell指的是KV一条数据,K就是Row1,info,name,154216535420(Row Key+CF+Column+timestamp),v就是张三
- 一个key可以有很多个版本的value值,查询的话返回最新的数据即时间戳最大的那个。
Region Server 和 Region 的关系
- 一个 Region Server 就是一个机器节点(服务器)
- 一个 Region Server 包含着多个 Region
- 一个 Region 包含着多个列簇 (CF)
- 一个 Region Server 中可以有多张 Table,一张 Table 可以有多个 Region
HBase数据模型之物理存储
逻辑结构 | 物理结构 |
---|---|
Region Server | HRegion Server |
Region | HRegion |
CF | Store |
- HRegion Server 就是一个机器节点,包含多个 HRegion ,但是这些 HRegion 不一定是来自于同一个 Table
- HRegion按大小分割的,每个表一开始只有一个region,随着数据不断插入表,HRegion不断增大,当增大到一个阀值的时候,HRegion就会等分会两个新的HRegion,当table中的行不断增多,就会有越来越多的Hregion。
- HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的HRegion Server上,但一个HRegion是不会拆分到多个server上的。
- HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。
- HLog(WAL Log),每个Region Server维护一个Hlog,而不是每个Region一个。这样不同Region(来自不同表)的日志会混在一起,这样做的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数,因此可以提高对表的写性能。
HBase基本框架
- Master
HBase Master用于协调多个Region Server,侦测各个RegionServer之间的状态,并平衡RegionServer之间的负载。DDL操作表。 - Region Server
对于一个RegionServer而言,其包括了多个Region。RegionServer的作用只是管理表格,以及实现读写操作。Region的切分和合并。 - Zookeeper
对于 HBase 而言,Zookeeper的作用是至关重要的。首先Zookeeper是作为HBase Master的HA解决方案。也就是说,是Zookeeper保证了至少有一个HBase Master 处于运行状态。并且Zookeeper负责Region和Region Server的注册。