HBase的读写和javaAPI的使用

一、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依赖


<code> <dependency>/<code>

<code> <groupid>org.apache.hbase/<groupid>/<code>

<code> <artifactid>hbase-server/<artifactid>/<code>

<code> <version>1.2.1/<version>/<code>

<code> /<code>

<code>

<code> <dependency>/<code>

<code> <groupid>org.apache.hbase/<groupid>/<code>

<code> <artifactid>hbase-client/<artifactid>/<code>

<code> <version>1.2.1/<version>/<code>

<code> /<code>


创建运行类

最终需要导入的包

创建以下方法

完成表创建

在hbase-site.xml中的配置信息

编写方法

运行代码

在hbase中查看,命名空间已经创建了

创建表

运行下代码

查看下

为了后续方便,我们更改下代码

将之前的代码做一下变化(代码)

运行测试

删除表(代码)

运行查看下,表已删除

添加(代码)

运行查看下(新创建了一个空间和表格),数据已添加

删除数据(代码)

下面这种是筛选删除

运行查看,数据已空

数据查询(代码)注释部分为筛选

结果查看(控制台)

Scan查看(代码)注释部分为筛选

结果查看