类似传统数据库中的DDL 和 DML
模式定义
表
表描述符 HTableDescriptorWritable 和无参数的构造函数
大部分类都有一个无参数的构造函数,这些类都实现了Hadoop 的 Writable接口。 任意不相交系统间的远程通信: 例如客户端与服务端或者服务端之间彼此通信,都使用了Hadoop RPC框架。框架中需要远程方法的参数都实现 Writable接口,进而能够序列化对象并进行传输。writable接口有两个实现方法- void write(DataOutput out)
- void readFields(Datainput in)
- 在RPC两端都必须可用
- 实现writable接口
- 拥有无参数的构造函数
列族
HTableDescriptor 虽然名字叫 HTable但是其实是针对列族的压缩
HBase支持插件式的压缩算法,这个功能允许用户选择合适的压缩算法 支持的压缩算法算法 | 描述 |
---|---|
NONE | 不压缩(默认) |
GZ | 使用Java提供的或者本地库的 GZIP |
LZO | 启用LZO压缩,需要安装LZO的类库 |
SNAPPY | 启用SNAPPY压缩,需要独立安装 |
压缩分为 一般压缩 和 合并压缩
块大小
默认为64KB 列族的块,或者说HFile的块不同HDFS层面的块。HDFS中的块默认是64MB, HBase中的HFile的块大小默认是64KBin-memory
默认为false。如果为true,则块数据会以较高优先级被加载到内存中,除非堆压力大,这个时候才会强制从内存卸载这部分数据 这个参数非常适合数据量小的列族,例如,保存登录账号和密码的用户表布隆过滤器
是HBase中的高级功能,能够减少特定访问模式下的查询时间,但是由于这种模式增加了内存和存储的负担,这个模式默认为关闭。复制范围
复制(replication)提供了跨集群的同步的功能。replication scope默认为0,意味着是关闭的。setScope(1)可以开启该功能HBaseAdmin
- HBaseAdmin实例的生命周期不宜太长。
- getMaster() 可以获取HMasterInterface 接口的RPC代理实例。除非用户确定自身的调用时安全的,否则不要显式调用 getMaster。
- 另一种高级建表的方式是 伴随建表操作进行预分区
- 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