1.HBase的简介
HBase是分布式存储,面向列的数据库(不是传统的关系型数据库(基于行存储)),然后水平可扩展性强,一般列能有几百万列,然后行的话大概是有十亿行,是超大规模的数据库,然后HBase是谷歌BigTable的开源实现,主要应用于互联网服务领域和传统行业的在线式数据分析系统
为什么要有HBase?
因为Hadoop主要是离线的大规模处理,然后实时处理比较慢有延迟
HBase和传统的关系数据库的区别
数据类型全是未经解释的字符串(需要程序员自己去进行类型解析)就像java的字节数组
数据操作 就是连接操作没有别的操作了
存储模式 基于列
数据索引 行键对的形式
数据维护 就算数据被更新了旧数据依然在
可伸缩性 非常好
HBase访问接口
1.Java API
2.shell
2.HBase的数据模型
为什么HBase要保存旧版本呢?
因为HBase的底层是由HDFS存储的,HDFS不支持文件的修改只支持文件的追加,所以在新的文件(EditLog)中追加数据,并且标记时间戳就能实现HBase的修改了
HBase中的四个主要元素
HBase中的概念视图以及物理视图
这也解释了为什么HBase是一个稀疏的表了(但是实际上不是这样)
不同的列族在底层中其实是分开存储的
传统的数据库的优劣
劣主要表现在分析某个数据时,例如分析用户的年龄分布特征之类的话,代价就很高了(需要每一行都去扫描 效率低下)
数据如果以传统的事务操作(增删改查就用行式)
如果主要去分析数据的话(用列式)
3.HBase的实现原理
HBase的功能组件
功能组件的关系
两个核心概念表和Region
怎么实现Region的定位
根数据表 :-ROOT表存储的是元数据信息(只有一个),即数据存储在哪儿了
元数据表 :.META表存储的是Region id和Region服务器 id的关系映射 即数据存储在哪个具体的服务器上了
4.HBase的运行机制
HBase的系统架构
Master服务器的作用
Region服务器的工作原理(就是存储具体数据的)
1个Region服务器包含多个Region然后公用一个HLog,其中每个Region中的列族称为Store,数据首先是写到MemStore的缓存当中(保证数据的可靠性和安全性)(其中会写HLog的日志中),当缓存满的时候在刷写到StoreFile(磁盘中了)中(StoreFile底层是借助于HDFS来存储的)
Store的工作原理
HLog的工作原理
zookeeper用来监视集群是否发生故障,然后通知相关的Master
HLog就是用来当服务器出现故障是就行修复的,因为日志中记录了很多相关的操作
4.HBase的应用方案
5.HBase的常用Java API
https://www.cnblogs.com/jieran/p/9161577.html
API的使用
https://www.cnblogs.com/gongxijun/p/5651834.html
HBase的官方API
https://hbase.apache.org/apidocs/