一、hbase系统管理表
hbase:namespace,记录了hbase中所有namespace的信息 ,当前系统下有哪些namespace信息
scan 'hbase:namespace'
hbase:meta,记录了region信息
scan 'hbase:meta'
二、读写思想
client(get、scan)
rowkey条件
(1)由于rowkey是存储在region上的
(2)判断rowkey在哪个region上
(3)找到region在哪台regionserver上
(4)首先会去meta表中读取信息,找到regionserver
meta也是一张表,也有region和regionserver
desc hbase:meta
在zookeeper中存储了meta表的region信息,可以到zookeeper客户端上去看
读的流程
(1)根据表名和rowkey(start-end范围)找到对应的region
(2)在zookeeper中存储了meta表的region信息
(3)从meta表中获取相应的region信息
(4)找到对应的regionserver
(5)找到对应的region
写的流程
(1)根据表名和rowkey(start-end范围)找到对应的region
(2)在zookeeper中存储了meta表的region信息
(3)从meta表中获取相应的region信息
(4)找到对应的regionserver(不是直接往region上写的,先写到wal再写到memstore)
WAL(预写日志)
memstore(内存中)满了后会flush成storefile
(5)当多个storefile达到一定大小以后,会进行compaction,合并一个大的storefile
(6)当大的storefile达到一定大小以后,会进行split,等分新的region
三、hbase Java API
启动Eclipse,创建Maven项目
在pom.xml中添加hbase依赖
org.apache.hbase
hbase-server
1.2.1
org.apache.hbase
hbase-client
1.2.1
创建运行类
最终需要导入的包
创建以下方法
完成表创建
在hbase-site.xml中的配置信息
编写方法
运行代码
在hbase中查看,命名空间已经创建了
创建表
运行下代码
查看下
为了后续方便,我们更改下代码
将之前的代码做一下变化(代码)
运行测试
删除表(代码)
运行查看下,表已删除
添加(代码)
运行查看下(新创建了一个空间和表格),数据已添加
删除数据(代码)
下面这种是筛选删除
运行查看,数据已空
数据查询(代码)注释部分为筛选
结果查看(控制台)
Scan查看(代码)注释部分为筛选
结果查看