客户端API可以管理HBase的集群、 表、 列族等元数据。大多数管理功能通过Admin来实现,标签除外。
1.列族管理 HColumnDescriptor
列族常见的属性管理:
- 数据生存时间:通过设置数据生存时间(TimeToLive, 缩写为TTL) , HBase可以自动帮你清空超过生存时间的过期数据。
- 版本数:设置列族存储的最大和最小版本数(Versions), 当某个单元格的数据存储达到了最大版本数的数据的时候, 再插入新数据会将旧数据删除。
- 布隆过滤器:可以知道元素在HFile中是否“ 不存在” 或者“ 可能存在”
- 块缓存:使用内存来记录数据, 适用于提升读取性能。
- 大字段(BOM):当文件大于100KB小于10MB, 即可以被视为MOB。 HBase存储MOB字段的时候其实也是把该文件直接存储到HDFS上, 而在表中只存储了该文件的链接。
2.表管理HTableDescriptor
- 最大文件尺寸(maxFileSize):设置该表的Region的最大尺寸。 如果有Region的大小超过了定义值, 则会触发Region拆分
- 只读模式
- Memstore刷写值:设置Memstore刷写值( memStoreFlushSize) 的最大值, 当Memstore存储的数据大于该值就会触发刷写( flush)
3.Region管理
获取服务器信息和region信息
Collection<ServerName> serverNames= admin.getClusterStatus().getServers();
Iterator<ServerName> it=serverNames.iterator();
while(it.hasNext()) {
ServerName serverName=it.next();
System.out.println("\nServer="+serverName.getServerName()+"拥有以下region:");
List<HRegionInfo> regions =admin.getOnlineRegions(serverName);
for(HRegionInfo region:regions) {
System.out.println(region.getRegionNameAsString());
}
4.快照管理
快照就是表在某个时刻的结构和数据。 可以使用快照来将某个表快速恢复到某个时刻的结构和数据。
原理:快照并不实际地复制数据, 而是保存一份文件列表, 通过修改表所链接的文件来改变表的数据。
恢复快照操作包括:停用表-》恢复快照-》启用表,例如:
admin.disableTable(TableName.valueOf("mytable"));
admin.restoreSnapshot("test_snapshot_1");
admin.enableTable(TableName.valueOf("mytable"));
5.维护工具管理
Admin提供了针对常见的HBase维护工具的调用方法,主要介绍:
- 均衡器:HBase提供了一个均衡器用于自动均衡各个RegionServer之间的压力
- 规整器:用于规整Region的尺寸,自动调整Region的尺寸。
- 目录管理器:所谓的目录指的就是hbase:meta表中存储的Region信息。 当HBase在拆分( Split) 或者合并( merge) 的时候, 使用目录管理器( catalog janitor) 来清理这些原来的Region信息
6.可见性标签管理
介绍一个不由Admin接口提供的管理功能。通过给数据加上可见性标签可以实现简单的用户,用户组的权限控制。