《HBase权威指南》读书笔记5:第五章 客户端API: 管理功能

时间:2021-09-20 08:33:35

类似传统数据库中的DDL 和 DML

模式定义

表描述符 HTableDescriptor

Writable 和无参数的构造函数

大部分类都有一个无参数的构造函数,这些类都实现了Hadoop 的 Writable接口。 任意不相交系统间的远程通信: 例如客户端与服务端或者服务端之间彼此通信,都使用了Hadoop RPC框架。框架中需要远程方法的参数都实现 Writable接口,进而能够序列化对象并进行传输。writable接口有两个实现方法
  • void write(DataOutput out)
  • void readFields(Datainput in)
数据接收服务器先读取元数据信息,并创建类的无参数实例,然后调用readFields方法将字节流中的信息读取到对应对象的字段中。
所以如果用户开发并扩展了HBase的基础实现,例如,过滤器和协处理器,则必须
  • 在RPC两端都必须可用
  • 实现writable接口
  • 拥有无参数的构造函数
没有任何参数的构造函数仅仅是为了反序列化,并且不应该被直接使用

列族

HTableDescriptor 虽然名字叫 HTable但是其实是针对列族的

压缩

HBase支持插件式的压缩算法,这个功能允许用户选择合适的压缩算法 支持的压缩算法
算法 描述
NONE 不压缩(默认)
GZ 使用Java提供的或者本地库的 GZIP
LZO 启用LZO压缩,需要安装LZO的类库 
SNAPPY 启用SNAPPY压缩,需要独立安装
压缩类型是 Compression.Algorithm枚举

压缩分为 一般压缩 和 合并压缩

块大小

默认为64KB 列族的块,或者说HFile的块不同HDFS层面的块。HDFS中的块默认是64MB, HBase中的HFile的块大小默认是64KB

in-memory

默认为false。如果为true,则块数据会以较高优先级被加载到内存中,除非堆压力大,这个时候才会强制从内存卸载这部分数据 这个参数非常适合数据量小的列族,例如,保存登录账号和密码的用户表

布隆过滤器

是HBase中的高级功能,能够减少特定访问模式下的查询时间,但是由于这种模式增加了内存和存储的负担,这个模式默认为关闭。

复制范围

复制(replication)提供了跨集群的同步的功能。replication scope默认为0,意味着是关闭的。setScope(1)可以开启该功能

HBaseAdmin

  • HBaseAdmin实例的生命周期不宜太长。
  • getMaster() 可以获取HMasterInterface 接口的RPC代理实例。除非用户确定自身的调用时安全的,否则不要显式调用 getMaster。
  • 另一种高级建表的方式是 伴随建表操作进行预分区
  • createTableAsync 是异步建表命令
关于异步命令:其实大多数命令都是异步的,同步的命令也只是对异步模式的封装,增加了不断检查这个任务是否已经完成的循环操作,例如 createTable 方法其实包装了 createTableAsync

集群管理

  • checkHBaseAvailable(conf) 可以验证客户端能否与远程HBase集群进行通信
  • flush(tableNameOrRegionName) 可以在memstore达到 memstore flush size 之前显示的让数据flush到磁盘上
  • compact   让表或者region合并
  • majorCompact  会迭代这张表的所有region,并顺序调用合并操作
  • split 可以提供 splitPoint 进行制定键的拆分
  • assign  和 unassign 可以控制region的上线和下线
  • move 可以移动region
  • balanceSwitch 可以控制是否开启负载均衡算法
  • balancer 主动运行负载均衡
  • shutdown stopMaster stopRegionServer 可以关闭集群,master,某个region server