Hbase 笔记(5) 客户端API 管理功能

来源:互联网 发布:windows应用商店下载 编辑:程序博客网 时间:2024/04/29 16:33

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()


5. 获取集群状态

一堆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);
 


0 0
原创粉丝点击