一条数据的HBase之旅,简明HBase入门教程-Write全流程

如果将上篇内容理解为一个冗长的"铺垫",那么,从本文开始,剧情才开始正式展开。本文基于提供的样例数据,介绍了写数据的接口,RowKey定义,数据在客户端的组装,数据路由,打包分发,以及RegionServer侧将数据写入到Region中的全部流程。

一条数据的HBase之旅,简明HBase入门教程-Write全流程

NoSQL漫谈

本文整体思路

  1. 前文内容回顾

  2. 示例数据

  3. HBase可选接口介绍

  4. 表服务接口介绍

  5. 介绍几种写数据的模式

  6. 如何构建Put对象(包含RowKey定义以及列定义)

  7. 数据路由

  8. Client侧的分组打包

  9. Client发RPC请求到RegionServer

  10. 安全访问控制

  11. RegionServer侧处理:Region分发

  12. Region内部处理:写WAL

  13. Region内部处理:写MemStore

为了保证"故事"的完整性,导致本文篇幅过长,非常抱歉,读者可以按需跳过不感兴趣的内容。

前文回顾

上篇文章《一条数据的HBase之旅,简明HBase入门教程-开篇》主要介绍了如下内容:

  • HBase项目概况(搜索引擎热度/社区开发活跃度)

  • HBase数据模型(RowKey,稀疏矩阵,Region,Column Family,KeyValue)

  • 基于HBase的数据模型,介绍了HBase的适合场景(以实体/事件为中心的简单结构的数据)

  • 介绍了HBase与HDFS的关系,集群关键角色以及部署建议

  • 写数据前的准备工作:建立连接,建表

示例数据

(上篇文章已经提及,这里再复制一次的原因,一是为了让下文内容更容易理解,二是个别字段名称做了调整)

给出一份我们日常都可以接触到的数据样例,先简单给出示例数据的字段定义:

一条数据的HBase之旅,简明HBase入门教程-Write全流程

示例数据字段定义

本文力求简洁,仅给出了最简单的几个字段定义。如下是”虚构”的样例数据:

一条数据的HBase之旅,简明HBase入门教程-Write全流程

示例数据

在本文大部分内容中所涉及的一条数据,是上面加粗的最后一行"Mobile1""13400006666"这行记录。在下面的流程图中,我们使用下面这样一个红色小图标来表示该数据所在的位置:

一条数据的HBase之旅,简明HBase入门教程-Write全流程

数据位置标记

可选接口

HBase中提供了如下几种主要的接口:

  • Java Client API

    HBase的基础API,应用最为广泛。

  • HBase Shell

    基于Shell的命令行操作接口,基于Java Client API实现。

  • Restful API

    Rest Server侧基于Java Client API实现。

  • Thrift API

    Thrift Server侧基于Java Client API实现。

  • MapReduce Based Batch Manipulation API

    基于MapReduce的批量数据读写API。

除了上述主要的API,HBase还提供了基于Spark的批量操作接口以及C++ Client接口,但这两个特性都被规划在了3.0版本中,当前尚在开发中。

无论是HBase Shell/Restful API还是Thrift API,都是基于Java Client API实现的。因此,接下来关于流程的介绍,都是基于Java Client API的调用流程展开的。

关于表服务接口的抽象

同步连接与异步连接,分别提供了不同的表服务接口抽象:

  • Table 同步连接中的表服务接口定义

  • AsyncTable 异步连接中的表服务接口定义

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值