Hbase框架介绍
HBase是一个分布式的、面向列的开源数据库。
不同点:
l 和一般的关系数据库不同,hbase是一个适合于非结构化数据存储的数据库。
l Hbase是基于列而不是基于行的模式。
在分布式的生产环境中,HBase 需要运行在 HDFS 之上,以 HDFS 作为其基础的存储设施。HBase上层提供了访问的数据的 Java API 层,供应用访问存储在 HBase 的数据。在 HBase 的集群中主要由 Master 和 Region Server 组成,以及 Zookeeper,
基本概念:
l RowKey
是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要;
l Timestamp
版本号,类型为Long,默认值是系统时间戳,可由用户自定义
l ColumnFamily
列族,拥有一个名称(string),包含一个或者多个相关列
l Column
属于某一个columnfamily,familyName:columnName,每条记录可动态添加
l Value(Cell)
单元格由行键、列族、时间戳唯一决定
单元格的数据是没有类型的,全部以字节码形式存储
Hbase组成
l Master
Hmaster用于调整多个regionServer,侦测各个regionServer之间的状态,并平衡regionServer之间的负载。Hmaster还有一个职责就是分配region给regionServer。
Hmaster允许多个Hmaster节点共存,但是这需要Zookeeper的协助。不过当多个Hmaster节点共存时,只有一个Hmaster是提供服务的,其它的Hmaster节点处于待命的状态。当正在工作的Hmaster节点宕机时,其它的Hmaster则会接管Hbase集群。
l RegionServer
对于一个regionServer而言,其包括了多个region。regionServer的作用只是管理表格,以及实现读写操作。Client直接连接regionServer,并通信获取Hbase中的数据。
l Region
Region是hbase中分布式存储和负载均衡的最小单位,但不是最小的存储单元。如个一个表格很大,并由多个CF组成时,那个表的数据将存放在多个region中,并且每个region会关联多个存储单元store。表在行方向分割为多个region,region是按大小分割的,随着region不断增大,当增大到一个阀值的时候,region就会分成两个region。
l Store
每个region中包含了多个store对象,一个store包含一个memstore和若干个storefile,storefile中包含一个或多个hfile。Memstore存放在内存中,storefile存放在hdfs上。
l Hfile
Hfile由很多个数据块(block)组成,并且有一个固定的结尾块。其中的数据块是由一个header和多个key-value的键值对组成。在结尾块中包含了数据相关的索引信息,系统也是通过结尾块的索引信息找到hfile中的数据。