Hbase学习(一)零基础开始学习
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
由行和列的坐标决定,单元格是有版本的。
数据结构总述
要想唯一确定一个单元格首先确定行,再确定列族,再确定列,再确定时间戳。
话不多说了,一切尽在下图中:
Hlog
除了介绍操作还记录数据(eg 插入5,不仅记录插入这个操作,还记录5这个数字),hlog文件是用来容灾的,在发现意外时,可以恢复数据库。
HBase体系结构
client
包含访问hbase的接口并维护cache加快对hbase访问
zookeeper
任何时候保证集群中只有一个master;存储所有region的寻址入口
master
负责负载均衡,发现失效的region server并重新分配;其实master主要作用是管理协调,并不直接处理请求
region server
维护region;切分在运行过程中变得更大的region
region
hbase的表被水平划分为多个区域,每个region会保存一个表中的某个区域。region增大到一定阈值,会等分成两个region;region server数据太多时,由master协调增加region server个数。一个region由多个store组成,一个store对应一个CF。
store(memstore和storefile)
store由一个memstore和多个storefile组成。memstore是写缓存,写操作首先写入memstore,memstore到达一定量级被存储为storefile。store file以hfile格式存在HDFS上面。