开发环境
硬件环境:Centos 6.5 服务器4台(一台为Master节点,三台为Slave节点)
软件环境:Java 1.7.0_45、Eclipse Juno Service Release 2、hadoop-1.2.1、hbase-0.94.20。
1、Hbase API介绍
1)几个相关类与HBase数据模型之间的对应关系
HbaseAdmin用于数据库的创建与删除,HbaseConfiguration用于数据库的配置,Htable用数据库表的相关操作,HtableDescriptor用于数据库表列族的相关操作,Put用于数据库表记录的添加,Get用户数据库表记录的获取,Scanner用于数据库表全表查询
2)HBaseConfiguration
类名:org.apache.hadoop.hbase.HBaseConfiguration
作用:对HBase进行配置
常用方法:void set(String name, String value),通过属性名来设置值。
用法示例:
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "Master");
3)HBaseAdmin
类名:org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理HBase数据库的表信息。它提供的方法包括:创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。
4)HTableDescriptor
类名:org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字极其对应表的列族。
常用方法:void addFamily(HcolumnDescriptor family) 添加一个列族。其详细用法如下所示,向tb_user表中添加了一个content列族。
HTableDescriptor tableDescriptor = new HTableDescriptor("tb_user");
HColumnDescriptor col = new HColumnDescriptor("content:");
tableDescriptor.addFamily(col);
5)HColumnDescriptor
类名:org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。
6)HTable
类名:org.apache.hadoop.hbase.client.HTable
作用:可以用来和HBase表直接通信。此方法对于更新操作来说是非线程安全的。
用法示例:
HTable table = null;
ResultScanner rs = null;
try {
Scan scan = new Scan();
table = new HTable(conf, tableName);
rs = table.getScanner(scan);
} catch (IOException e) {
e.printStackTrace();
}
7) Put
类名:org.apache.hadoop.hbase.client.Put
作用:用来对单个行执行添加操作
用法示例:
HTable table = null;
try {
table = new HTable(conf, tabelName);
Put putRow1 = new Put(rowKey.getBytes());
putRow1.add(family.getBytes(), qualifier.getBytes(),value.getBytes());
table.put(putRow1);
table.close();
} catch (IOException e) {
e.printStackTrace();
}
8)Get
类名:org.apache.hadoop.hbase.client.Get
作用:用来获取单个行的相关信息
用法示例:
Get query = new Get(rowKey.getBytes());
query.addColumn(Bytes.toBytes(family), By