code搬运工_HBaseClientAPI和架构

HBaseClientAPI和架构

  • HBase架构
    HBase Master是服务器负责管理所有的HRegion服务器,HBase Master并不存储HBase服务器 的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBase Master Server中存储的是从数据到HRegion Server的映射。一台机器只能运行一个HRegion服务器,数据的操作会记录在Hlog中,在读取数据时候,HRegion会先访问Hmemcache缓存,如果缓存中没有数据才回到Hstore中上找,没一个列都会有一个Hstore集合,
    每个Hstore集合包含了很多具体的HstoreFile文件,这些文 件是B树结构的,方便快速读取。

Ø Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
Ø Timestamp: 时间戳,每次数据操作对应的时间戳,
可以看作是数据的version number
Ø Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式
存储,用户需要自行进行类型转换。

  • HBaseClient API
    Ø HBaseAdmin
    提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删 除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。


    code搬运工_HBaseClientAPI和架构_第1张图片
    image.png

Ø HBaseConfiguration
对 HBase 进行配置


code搬运工_HBaseClientAPI和架构_第2张图片

Ø HTableDescriptor

包含了表的名字极其对应表的列族
code搬运工_HBaseClientAPI和架构_第3张图片
image.png

Ø HColumnDescriptor
维护着关于列族的信息,例如版本号,压缩设置等。
它通常在创建表或者为表添 加列族的时候使用。

列族被创建后不能直接修改,只能通过删除然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。


code搬运工_HBaseClientAPI和架构_第4张图片
image.png

Ø HTable
可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。
code搬运工_HBaseClientAPI和架构_第5张图片
image.png

code搬运工_HBaseClientAPI和架构_第6张图片
image.png

Ø Put
用来对单个行执行添加操作
code搬运工_HBaseClientAPI和架构_第7张图片
image.png

ØGet
用来获取单个行的相关信息
code搬运工_HBaseClientAPI和架构_第8张图片
image.png

ØResult
存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值 或者各种 Map 结构( key-value 对)


code搬运工_HBaseClientAPI和架构_第9张图片
image.png

Ø HTablePool
能够解决HTable存在的线程不安全问题。同一时候通过维护固定数量的HTable对象,能够在程序执行期间复用这些HTable资源对象。
说明:
1. HTablePool能够自己主动创建HTable对象,并且对客户端来说使用上是全然透明的。能够避免多线程间数据并发改动问题。
2. HTablePool中的HTable对象之间是公用Configuration连接的,能够能够降低网络开销。
HTablePool的使用非常easy:每次进行操作前。通过HTablePool的getTable方法取得一个HTable对象,然后进行put/get/scan/delete等操作,最后通过HTablePool的putTable方法将HTable对象放回到HTablePool中。
Ø ResultScanner
存储Get或者Scan操作后获取表的单行值。
使用此类提供的方法能够直接获取值或者各种Map结构( key-value对)。

你可能感兴趣的:(code搬运工_HBaseClientAPI和架构)