本文主要介绍如何使用Java Client访问HBase标准版集群。
前提条件
通过内网连接时,请确认已购买与HBase标准版在相同专有网络VPC网络下的ECS服务器,并将ECS服务器的IP地址在HBase中添加为白名单。
通过外网连接时必须使用阿里提供的客户端,下载客户端请参见HBase Java SDK 下载。
若未配置白名单,请参考设置白名单和安全组。
背景信息
云HBase企业标准版可以直接使用社区开源版客户端,也可以使用阿里定制的HBase客户端访问。
如果您的运行环境上并没有HBase的client运行需要的JAR包,请在Maven中添加如下的配置,把所有HBase-client的依赖都打到最终的JAR包中。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> </artifactSet> </configuration> </execution> </executions> </plugin> </plugins> </build>
操作步骤
获取集群的ZK连接地址。
登录云数据库HBase控制台。
在集群列表页面,单击标准版集群实例名称,进入集群详情页面。
在集群详情页面,单击数据库连接,进入数据库连接页,复制该实例的ZK链接地址。
配置ZK地址,连接集群。
在客户本地的业务代码中通过如下配置,连接集群。
说明用集群的ZK地址替换代码中的ZK地址,就可以使用如下的示例代码来进行HBase集群的访问,以下示例中展示了创建表、写入数据、读取数据三种场景。
private static final String TABLE_NAME = "mytable"; private static final String CF_DEFAULT = "cf"; public static final byte[] QUALIFIER = "col1".getBytes(); private static final byte[] ROWKEY = "rowkey1".getBytes(); public static void main(String[] args) { Configuration config = HBaseConfiguration.create(); //ZK地址 String zkAddress = "hb-bp1f5xxxx48a0r17i-001.hbase.rds.aliyuncs.com:2181,hb-bp1f5xxxx48a0r17i-002.hbase.rds.aliyuncs.com:2181,hb-bp1f5xxxx48a0r17i-003.hbase.rds.aliyuncs.com:2181"; config.set(HConstants.ZOOKEEPER_QUORUM, zkAddress); Connection connection = null; try { connection = ConnectionFactory.createConnection(config); HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME)); tableDescriptor.addFamily(new HColumnDescriptor(CF_DEFAULT)); System.out.print("Creating table. "); Admin admin = connection.getAdmin(); admin.createTable(tableDescriptor); System.out.println(" Done."); Table table = connection.getTable(TableName.valueOf(TABLE_NAME)); try { Put put = new Put(ROWKEY); put.addColumn(CF_DEFAULT.getBytes(), QUALIFIER, "this is value".getBytes()); table.put(put); Get get = new Get(ROWKEY); Result r = table.get(get); byte[] b = r.getValue(CF_DEFAULT.getBytes(), QUALIFIER); // returns current version of value System.out.println(new String(b)); } finally { if (table != null) table.close(); } } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (IOException e) { e.printStackTrace(); } } } }
后续操作
您也可以在这里下载我们提供的Java代码工程,替换其中的ZooKeeper变量部分后使用单击下载。
文档内容是否对您有帮助?