1.1什么是hbase
HBase是一个高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可以在廉价PC Server上搭建大规模结构存储集群。
HBASE目标的的英文存储并处理由成千上万大型的数据,更具有来说是仅需使用普通的硬件配置,就能能够处理成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统; Google运行mapreduce来处理Bigtable中的海量数据,HBASE同样利用Hadoop mapreduce来处理HBASE中海量数据; Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。
1.2与传统数据库的对比
传统数据库遇到的问题
1)数据量很大的时候无法存储
2)没有很好的备份机制
3)数据达到一定数量开始缓慢,很大的时候基本无法支撑。
2,HBASE优势
1.线性扩展,随着数据量增多可以通过节点扩展进行支撑。
2.数据存储在HDFS上,备份机制健全。
3.通过zookeeper协调查找数据,访问速度快。
1.3 HBase集群中的角色
1.一个或者多个主节点,HMaster
2.多个从节点,HregionServer
3.hbase数据模型
3.1 hbase数据模型
3.1.1行密钥
与NOSQL数据库一样,行键是可以用来检索记录的主键。访问HBASE表中的行,只用三种方式:
1.通过单个行键访问。
2.通过行键的范围(正则)
全表扫描
行键行键(行键)可以是任意字符串(最大长度是64 KB,实际应用中长度一般为10 - 100bytes),
在HBASE内部,行键保存为字节数组。存储时,数据按照行键的字典序(字节顺序)排序存储。
设计关键时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。
3.1.2列族
列簇:HBASE表中的每个列,都归属于某个列族。列族是表的schema的一部分分(而列不是),必须在使用表之前定义。
列名都以列作为前缀,例如courses:history,courses:math都属于courses这个列族。
3.1.3细胞
由{row,Key,columnFamily,Version}唯一确定的单元.Cell中数据是没有类型,全部是字节码形式存储。
关键字:无类型,字节码
3.1.4时间戳
HBASE中通过rowkey和columns确定的为一个存储单元称为cell。
每个Cell都保存着同一份数据的多个版本。版本通过事件戳来索引。时间戳的类型是64位整数。时间戳可以由HBASE(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,即最新的数据排在最前面。
为了避免数据存在过多版本造成的管理(包括存储和索引)负担,HBASE提供了两种数据版本回收方式。一是保存数据的最后Ñ个版本,二是保存最近一段时间内的版本(比如最近其七天)。用户可以针对每个列族进行设置。
4. HBASE命令
4.1命令的进退
1. hbase提供了一个shell的终端给用户交互
hbase shell
2.如果退出执行quit命令
---> hbase shell
- >退出
4.2命令
5. hbase依赖zookeeper
1.保存Hmaster的地址和backup-master地址
HMASTER:
a)管理HregionServer
b)做增删改查表的节点
c)管理HregionServer的表分配。
2.保存--ROOT - 的地址
hbase默认的根表,检索表
3. HregionServer列表
表的增删改查数据
和HDFS交互,存储数据
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------