HBase的读写和javaAPI的使用

一、hbase系统管理表

hbase:namespace,记录了hbase中所有namespace的信息 ,当前系统下有哪些namespace信息

scan 'hbase:namespace'

HBase的读写和javaAPI的使用

hbase:meta,记录了region信息

scan 'hbase:meta'

HBase的读写和javaAPI的使用

二、读写思想

client(get、scan)

rowkey条件

(1)由于rowkey是存储在region上的

(2)判断rowkey在哪个region上

(3)找到region在哪台regionserver上

(4)首先会去meta表中读取信息,找到regionserver

meta也是一张表,也有region和regionserver

desc hbase:meta

HBase的读写和javaAPI的使用

在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项目

HBase的读写和javaAPI的使用

在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的读写和javaAPI的使用

创建运行类

HBase的读写和javaAPI的使用

最终需要导入的包

HBase的读写和javaAPI的使用

创建以下方法

HBase的读写和javaAPI的使用

完成表创建

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

HBase的读写和javaAPI的使用

编写方法

HBase的读写和javaAPI的使用

运行代码

HBase的读写和javaAPI的使用

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

创建表

HBase的读写和javaAPI的使用

运行下代码

HBase的读写和javaAPI的使用

查看下

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

运行测试

HBase的读写和javaAPI的使用

删除表(代码)

HBase的读写和javaAPI的使用

运行查看下,表已删除

HBase的读写和javaAPI的使用

添加(代码)

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

删除数据(代码)

HBase的读写和javaAPI的使用

下面这种是筛选删除

HBase的读写和javaAPI的使用

运行查看,数据已空

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

结果查看(控制台)

HBase的读写和javaAPI的使用

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

HBase的读写和javaAPI的使用

结果查看

HBase的读写和javaAPI的使用


分享到:


相關文章: