1、创建表
hbaseAdmin.createTable(htableDescriptor);
hbaseAdmin.createTable(htableDescriptor, splitKeys);
hbaseAdmin.createTable(htableDescriptor, startKey,endKey, numRegions);
hbaseAdmin.createTableAsync(htableDescriptor,splitKeys);
2、表是否存在:hbaseAdmin.tableExists(strTableName)
3、修改表结构
先禁用,再启用
HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(Bytes.toBytes(strTableName)); tableDescriptor.addFamily(new HColumnDescriptor("cf3")); tableDescriptor.setMaxFileSize(1024*1024*1024L); hbaseAdmin.disableTable(strTableName); hbaseAdmin.modifyTable(strTableName, tableDescriptor); hbaseAdmin.enableTable(strTableName);
4、集群管理
hbaseAdmin.closeRegion(regionName, hostAnfPort); // 关闭 Region
hbaseAdmin.flush(strTableNameOrRegion); //Fulsh 表或Region
hbaseAdmin.compact(strTableNameOrRegion); // 合并 表或Region
hbaseAdmin.majorCompact(strTableNameOrRegion); //Major 合并表或Region
hbaseAdmin.split(strTableNameOrRegion , splitPoint); //分割表或Region
hbaseAdmin.aggign(region, force); // 上线Region
hbaseAdmin.unaggign(region , force); //下线 Region
hbaseAdmin.move(regionName , RegionServer); //移动 Region
hbaseAdmin.balancer() // 负载均衡
hbaseAdmin.balanceSwitch( boolean open) // 开启/关闭负载均衡
hbaseAdmin.shutdown()
hbaseAdmin.shopMaster()
hbaseAdmin.shopRegionServer()
一堆get方法。
6、表、列族的属性
创建表代码
HBaseAdmin hbaseAdmin = new HBaseAdmin(conf); HTableDescriptor htableDescriptor = new HTableDescriptor(TableName.valueOf(strTableName)); htableDescriptor.setMaxFileSize(1024 * 1024 * 1024L); htableDescriptor.setReadOnly(false); htableDescriptor.setMemStoreFlushSize(1024 * 1024L); htableDescriptor.setDeferredLogFlush(false); HColumnDescriptor cf1 = new HColumnDescriptor("cf1"); HColumnDescriptor cf2 = new HColumnDescriptor("cf2"); cf1.setMaxVersions(100); cf2.setMaxVersions(999); cf1.setBlocksize(64 * 1024); cf2.setBlocksize(64 * 1024); cf1.setCompressionType(Compression.Algorithm.SNAPPY); cf2.setCompressionType(Compression.Algorithm.SNAPPY); cf1.setCompactionCompressionType(Compression.Algorithm.SNAPPY); cf2.setCompactionCompressionType(Compression.Algorithm.SNAPPY); cf1.setBlockCacheEnabled(true); cf2.setBlockCacheEnabled(true); cf1.setTimeToLive(Integer.MAX_VALUE); cf2.setTimeToLive(Integer.MAX_VALUE); cf1.setBloomFilterType(BloomType.ROW); cf2.setBloomFilterType(BloomType.NONE); cf1.setScope(1); cf2.setScope(0); htableDescriptor.addFamily(cf1); htableDescriptor.addFamily(cf2); hbaseAdmin.createTable(htableDescriptor);
(1).表名
htableDescriptor.setName(TableName.valueOf("tableName"));
(2). 表的Region大小
实际上是Region的大小,默认256M,超过该值将分裂
htableDescriptor.setMaxFileSize(1024*1024*1024L);
(3).表的只读
htableDescriptor.setReadOnly(true);
(4). 表的memstore 刷写大小
写缓冲区,默认64M
htableDescriptor.setMemStoreFlushSize(1024*1024L);
(5).表的延时日志刷写
默认false
htableDescriptor.setDeferredLogFlush(false);
(6).列族的最大版本数
默认3,可设为1,不访问旧数据
cf1.setMaxVersions(1); cf2.setMaxVersions(999);(7).列族压缩
默认为NODE。CompressionType 是一般的压缩,CompactionCompressionType是合并压缩。
cf1.setCompressionType(Compression.Algorithm.SNAPPY); cf2.setCompressionType(Compression.Algorithm.SNAPPY); cf1.setCompactionCompressionType(Compression.Algorithm.SNAPPY); cf2.setCompactionCompressionType(Compression.Algorithm.SNAPPY);
(8). 列族的块大小
默认64K
cf1.setBlocksize(64*1024); cf2.setBlocksize(64*1024);
(9).列族的缓存块
HBase顺序地读取数据块到内存缓存中,减少磁盘I/O。
cf1.setBlockCacheEnabled(true); cf2.setBlockCacheEnabled(true);
(10). 列族的版本生存期TTL
默认Integer.MAX_VALUE
cf1.setTimeToLive(Integer.MAX_VALUE); cf2.setTimeToLive(Integer.MAX_VALUE);
(11).列族放置在内存中
适合于较小的列族,例如登陆的用户表,默认false。
cf1.setInMemory(false); cf2.setInMemory(false);
(12). 列族的Bloom 过滤器
能够减少特定访问模式下的查询时间,但是增加了内存和存储的负担。默认关闭
cf1.setBloomFilterType(BloomType.ROW); cf2.setBloomFilterType(BloomType.ROWCOL); //cf2.setBloomFilterType(BloomType.NONE);
(13).复制范围
0为本地, 1为全局
cf1.setScope(1); cf2.setScope(0);