本篇主要介绍如何通过HBase API访问Lindorm宽表引擎。
使用HBase Java API访问Lindorm
操作前请确认已完成SDK安装且已获取集群的连接地址。
- 配置客户端参数。
您可以通过以下两种方式,来配置访问Lindorm的客户端参数。
- 配置文件
hbase-site.xml 中增加下列配置项:
<configuration> <!-- 集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址) --> <property> <name>hbase.zookeeper.quorum</name> <value>ld-xxxx-proxy-hbaseue.lindormue.xxx.rds.aliyuncs.com:30020</value> </property> <!-- 设置用户名密码,默认root:root,可根据实际情况调整 --> <property> <name>hbase.client.username</name> <value>root</value> </property> <property> <name>hbase.client.password</name> <value>root</value> </property> <!-- 如果您直接依赖了阿里云HBase客户端,则无需配置connection.impl参数,如果您依赖了alihbase-connector,则需要配置此参数 --> <!--property> <name>hbase.client.connection.impl</name> <value>org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection</value> </property--> </configuration>
- 代码
通过代码Create Configuration,然后增加相关配置。
// 新建一个Configuration Configuration conf = HBaseConfiguration.create(); // 集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址) conf.set("hbase.zookeeper.quorum", "ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020"); // 设置用户名密码,默认root:root,可根据实际情况调整 conf.set("hbase.client.username", "root") conf.set("hbase.client.password", "root") // 如果您直接依赖了阿里云Lindorm客户端,则无需配置connection.impl参数,如果您依赖了alihbase-connector,则需要配置此参数 //conf.set("hbase.client.connection.impl", AliHBaseUEClusterConnection.class.getName());
注意 如果您依赖了老版本的alihbase-connector(版本号小于1.0.9/2.0.9)请参见老版本的参数配置。
- 配置文件
- 创建连接。
通过配置conf创建Connection,Conf的生成详见上一节中的代码访问方式。
// 创建HBase连接,在程序生命周期内只需创建一次,该连接线程安全,可以共享给所有线程使用。 // 在程序结束后,需要将Connection对象关闭,否则会造成连接泄露。 // 也可以采用try finally方式防止泄露 Connection connection = ConnectionFactory.createConnection(conf);
- 使用API。
建立完连接后,即可使用HBase Java API访问Lindorm集群。下面提供一些简单的Java 示例。
- DDL操作
try (Admin admin = connection.getAdmin()){ // 建表 HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename")); htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family"))); // 创建一个只有一个分区的表 // 在生产上建表时建议根据数据特点预先分区 admin.createTable(htd); // disable 表 admin.disableTable(TableName.valueOf("tablename")); // truncate 表 admin.truncateTable(TableName.valueOf("tablename"), true); // 删除表 admin.deleteTable(TableName.valueOf("tablename")); }
- DML操作
//Table 为非线程安全对象,每个线程在对Table操作时,都必须从Connection中获取相应的Table对象 try (Table table = connection.getTable(TableName.valueOf("tablename"))) { // 插入数据 Put put = new Put(Bytes.toBytes("row")); put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); table.put(put); // 单行读取 Get get = new Get(Bytes.toBytes("row")); Result res = table.get(get); // 删除一行数据 Delete delete = new Delete(Bytes.toBytes("row")); table.delete(delete); // scan 范围数据 Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // 处理查询结果result // ... } scanner.close(); }
- DDL操作
使用HBase 非Java API访问Lindorm
Lindorm支持通过HBase 非Java(C++/Python/Go等)API进行访问, 具体访问方法请参见通过HBase非Java SDK访问Lindorm宽表引擎。
使用HBase Shell访问Lindorm
- 前提条件
- 已获取阿里云提供的HBase tar包。有两种方式可以获得:
- 方式一:直接下载完整压缩包,里面已经拥有了访问Lindorm所需的全部依赖,并做了功能增强。下载地址 : 数据库连接>连接信息>hbase shell下载。
- 方式二:直接从HBase官方网站下载你所需版本的HBase的tar包。并按照通过导入JAR文件升级HBase客户端的指导,拷贝相应版本的jar包拷贝至tar包解压后的lib目录中。
- 已获取集群的连接地址。HBase Shell使用的连接地址为连接信息中的Java API访问地址部分(注意专有网络地址和外网地址的区别)。
- 已获取阿里云提供的HBase tar包。有两种方式可以获得:
- 配置参数
在解压后的tar包中的conf/目录下的hbase-site.xml文件中,加入如下配置:
<configuration> <!-- 集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址) --> <property> <name>hbase.zookeeper.quorum</name> <value>ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020</value> </property> <!-- 设置用户名密码,默认root:root,可根据实际情况调整 --> <property> <name>hbase.client.username</name> <value>root</value> </property> <property> <name>hbase.client.password</name> <value>root</value> </property> </configuration>
- 使用Shell访问
进入tar包解压路径里的bin/目录,输入
./hbase shell
。就可以开始使用原生的HBase Shell访问Lindorm(默认log文件在hbase tar包解压后的logs目录下)。Shell的详细使用方法可以参见HBase Shell入门。
使用Shell连接只能做简单的DDL操作和数据读写操作,管理接口如balance、move等集群管理命令都已经被禁用。