hbase是谷歌bigdata论文的一个代码实现,hbase是开源软件,在大数据处理领域应用广泛。今天楼主先来介绍一些基本原理,后面用工程代码方式来叙述API的用法。楼主是新手,如有错误,欢迎大家指正。
简介
Hbase(Hadoop database)是一个高可靠性(数据存储在HDFS文件存储系统上,十分可靠,有机会楼主再写HDFS的博文)、高性能(传统单机数据库在数据量高于百万数量级后性能很差)、面向列、可伸缩实时读写的分布式数据库。
hbase主要用来存储非结构化和半结构化的松散数据。
数据结构
首先介绍一下基本概念
row key
决定一行数据;按照字典顺序排序,数据有结构;row key最大为64K(注意只能存储字节数组,要先转换成字节数组才能存入hbase)
time stamp 时间戳
hbase每个cell存储单元对同一份数据由多个版本,根据时间戳来区分不同版本,不同版本的数据按照时间倒序排列,最新的数据排在最前面。时间戳是64为整形数据,在写入数据时自动赋值(用户也可以自己给时间戳赋值)。hbase并不会存储每个时间戳的历史数据,由用户设置一个最大版本数来约束版本的数量,多余的版本在合并时被删除。
column family
(新手可以暂时这样理解:传统关系型数据库里面的列的集合就是hbase里面的列族)hbase把同一列族里面的数据存在同一目录下,一个列族可以有多个列成员(eg:course这个列族可以有以下几列 math、cs
访问时,列名为:course:math)
cell
由行和列的坐标决定,单元格是有版本的。
Hbase 表结构
Hbase的存储机制
1、Hbase 表依赖于HDFS,当数据到达一个程度则会切分为一个region。
2、一个用户的数据表会被气氛为很多个region,然后分别存储到不同的regionserver上。hbase文件在HDFS上落地成HFile 。
3、HMaster 作为hbase 的管理节点,HMaster 不负责存储表数据,只负责管理regionserver的状态 和 regionserver 的负载均衡。
Hbase的寻址机制
1、一张庞大的用户数据表,会被分割为若干个region。每一个region会有一个起始行键,和结束行键。
2、每个表所属的主机,每个region的起始结束行键等信息都会被保存到一个系统表MATE中。一个region就在这张系统表MATE中产生一条记录。
3、其中MATE可能非常庞大,MATE表也是分布式存储。一定数据量也会形成一个region。相当于计算机系统的分级索引。
4、ROOT表将会保存在一台RegionServer上。并会记录在Zookeeper中 。
5、需要寻找一张表的内容,Zookeeper =》 ROOT表 =》MATE表 =》 RegionServer中的region