HBase-读写流程及JavaAPI

1、读写流程

1.1、HBase 读数据流程

1) HRegionServer 保存着 meta 表以及表数据,要访问表数据,首先 Client 先去访问 zookeeper,从 zookeeper 里面获取 meta 表所在的位置信息,即找到这个 meta 表在哪个 HRegionServer 上保存着。

2) 接着 Client 通过刚才获取到的 HRegionServer 的 IP 来访问 Meta 表所在的HRegionServer,从而读取到 Meta,进而获取到 Meta 表中存放的元数据。

3) Client 通过元数据中存储的信息,访问对应的 HRegionServer,然后扫描所在 HRegionServer 的 Memstore 和 Storefile 来查询数据。

4) 最后 HRegionServer 把查询到的数据响应给 Client。

1.2、HBase 写数据流程

1) Client 也是先访问 zookeeper,找到 Meta 表,并获取 Meta 表信息。

2) 确定当前将要写入的数据所对应的 RegionServer 服务器和 Region。

3) Client 向该 RegionServer 服务器发起写入数据请求,然后 RegionServer 收到请求并响应。

4) Client 先把数据写入到 HLog,以防止数据丢失。

5) 然后将数据写入到 Memstore。

6) 如果 Hlog 和 Memstore 均写入成功,则这条数据写入成功。在此过程中,如果 Memstore 达到阈值,会把 Memstore 中的数据 flush 到 StoreFile 中。

7) 当 Storefile 越来越多,会触发 Compact 合并操作,把过多的 Storefile 合并成一个大的 Storefile。当 Storefile 越来越大,Region 也会越来越大,达到阈值后,会触发 Split 操作, 将 Region 一分为二。

2、JavaAPI

2.1、新建maven工程,在pom.xml中添加以下以来。

2.2、编写 HBaseAPI

1) 首先需要获取 Configuration 对象:

2) 判断表是否存在:

3) 创建表:

4) 删除表:

5) 向表中插入数据:

6) 删除多行数据:

7) 得到所有数据:

8) 得到某一行所有数据:

9) 获取某一行指定“列族:列”的数据:

猜你喜欢

转载自blog.csdn.net/liberty12345678/article/details/86152120