全部产品

使用Java Client 访问

更新时间:2017-06-07 13:26:11   分享:   

使用JavaClient访问 HBase

访问准备

因为HBase只提供了内网的访问,所以如果要访问HBase,需要在相同的Region内准备一台ECS。如果已经有ECS了那么请继续下一步。如果还没有,您可以在ECS的购买页面上购买一台按量的ECS进行测试。

设置请参考这里

使用 Client 读写 HBase

  1. 引入 Maven 依赖

    1. <groupId>org.apache.hbase</groupId>
    2. <artifactId>hbase-client</artifactId>
    3. <version>1.1.1</version>

    这里1.1.x的其他版本都是可以使用的,HBase在第三位的小版本上的变化是保证所有的接口兼容的。

    如果您的运行环境上并没有HBase的client运行需要的jar包,请在maven中添加如下的shade配置,把所有hbase-client的依赖都打到最终的jar包中。

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.plugins</groupId>
    5. <artifactId>maven-shade-plugin</artifactId>
    6. <version>3.0.0</version>
    7. <executions>
    8. <execution>
    9. <phase>package</phase>
    10. <goals>
    11. <goal>shade</goal>
    12. </goals>
    13. <configuration>
    14. <artifactSet>
    15. </artifactSet>
    16. </configuration>
    17. </execution>
    18. </executions>
    19. </plugin>
    20. </plugins>
    21. </build>
  2. 获取集群的 ZK 连接地址

    进入 HBase 控制台集群详情页面,在网络信息部分查看ZK连接地址,可以看到类似如下的ZooKeeper的连接地址。

    1. hb-bp1f5xxxx48a0r17i-001.hbase.rds.aliyuncs.com:2181
    2. hb-bp1f5xxxx48a0r17i-002.hbase.rds.aliyuncs.com:2181
    3. hb-bp1f5xxxx48a0r17i-003.hbase.rds.aliyuncs.com:2181
  3. 配置 ZK 地址,连接集群

    将集群的zk地址替换代码中的zk地址,就可以使用如下的示例代码来进行hbase集群的访问了。 例子中展示了创建表、写入数据、读取数据 三种场景。

    1. private static final String TABLE_NAME = "mytable";
    2. private static final String CF_DEFAULT = "cf";
    3. public static final byte[] QUALIFIER = "col1".getBytes();
    4. private static final byte[] ROWKEY = "rowkey1".getBytes();
    5. public static void main(String[] args) {
    6. Configuration config = HBaseConfiguration.create();
    7. 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";
    8. config.set(HConstants.ZOOKEEPER_QUORUM, zkAddress);
    9. Connection connection = null;
    10. try {
    11. connection = ConnectionFactory.createConnection(config);
    12. HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
    13. tableDescriptor.addFamily(new HColumnDescriptor(CF_DEFAULT));
    14. System.out.print("Creating table. ");
    15. Admin admin = connection.getAdmin();
    16. admin.createTable(tableDescriptor);
    17. System.out.println(" Done.");
    18. Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
    19. try {
    20. Put put = new Put(ROWKEY);
    21. put.addColumn(CF_DEFAULT.getBytes(), QUALIFIER, "this is value".getBytes());
    22. table.put(put);
    23. Get get = new Get(ROWKEY);
    24. Result r = table.get(get);
    25. byte[] b = r.getValue(CF_DEFAULT.getBytes(), QUALIFIER); // returns current version of value
    26. System.out.println(new String(b));
    27. } finally {
    28. if (table != null) table.close();
    29. }
    30. } catch (Exception e) {
    31. e.printStackTrace();
    32. } finally {
    33. if (connection != null) {
    34. try {
    35. connection.close();
    36. } catch (IOException e) {
    37. e.printStackTrace();
    38. }
    39. }
    40. }
    41. }

代码样例

您也可以在这里下载我们提供的Java代码工程,替换其中的ZooKeeper变量部分后使用

HBase访问Demo下载

本文导读目录
本文导读目录
以上内容是否对您有帮助?