重点介绍与HBase数据存储管理相关的内容,其涉及的类主要包括:HBaseAdmin、HBaseConfiguration、HTable、HTableDescriptor、Put、Get和Scanner。关于Java API的详细内容可以查看http://hbase.apache.org/apidocs/index.html
相关类与HBase数据模型之间的对应关系
一、HBaseConfiguration
关系:org.apache.hadoop.hbase.HBaseConfiguration
作用:通过此类可以对HBase进行配置
用法示例:
Configuration conf = HBaseConfiguration.create();
//此方法使用默认的HBase资源来创建Configuration。程序默认会从classpath中查找hbase-site.xml的位置从而初始化Configuration
二、HBaseAdmin
关系:org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理HBase数据库的表信息。它提供的方法包括:创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。
用法示例:
HBaseAdmin admin = new HBaseAdmin(config);
admin.disableTable("tablename");
//通过一个HBaseAdmin实例调用disableTable方法来使表处于无效状态
三、HTableDescriptor
关系:org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字极其对应表的列族
用法示例:
HTableDescriptor htd = new HTableDescriptor(tablename);
htd.addFamily(new HcolumnDescriptor("Family"));
//通过一个HcolumnDescriptor实例,为HTableDescriptor添加了一个列族Family
四、HColumnDescriptor
关系:org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。
用法示例:
HTableDescriptor htd = new HTableDescriptor(tablename);
HColumnDescriptor col = new HColumnDescriptor("content:");
htd.addFamily(col);
//添加了一个名为content的列族
五、HTable
关系:org.apache.hadoop.hbase.client.HTable
作用:可以用来和HBase表直接通信。此方法对于更新操作来说是非线程安全的,如果有过多的线程尝试与单个HTable实例进行通信,那么写缓冲器可能会崩溃。这是建议使用HTablePool类进行操作
用法示例:
HTable table = new HTable(conf, Bytes.toBytes(tablename));
ResultScanner scanner = table.getScanner(Bytes.toBytes(“cf”));
//获取表内所有列族为“cf”的记录
六、Put
关系:org.apache.hadoop.hbase.client.Put
作用:用来对单个行执行添加操作
用法示例:
HTable table = new HTable(conf,Bytes.toBytes(tablename));
Put p = new Put(row);//为指定行row创建一个Put操作
p.add(family,qualifier,value);
table.put(p);
七、Get
关系:org.apache.hadoop.hbase.client.Get
作用:用来获取单个行的相关信息
用法示例:
HTable table = new HTable(conf, Bytes.toBytes(tablename));
Get g = new Get(Bytes.toBytes(row));
Result result = table.get(g);
八、Result
关系:org.apache.hadoop.hbase.client.Result
作用:存储Get或者Scan操作后获取表的单行值。使用此类提供的方法可以直接获取值或者各种Map结构(key-value对)
用法示例:
九、ResultScanner
关系:Interface
作用:客户端获取值的接口
参考资料:《Hadoop实战》路嘉恒 著