Tablestore HBase Client是基於HBase Client的封裝,使用方法和HBase Client基本一致,但仍存在一些差別。本文主要為您介紹如何從HBase Client遷移到Tablestore HBase Client 。

依賴

Tablestore HBase Client 1.2.0版本依賴了HBase Client 1.2.0版本和Tablestore Java SDK 4.2.1版本。pom.xml配置如下:

 <dependencies>
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore-hbase-client</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>
            

如果需要使用其他版本的HBase Client或Tablestore Java SDK,可以使用exclusion標籤。下面樣本中使用HBase Client 1.2.1版本和Tablestore4.2.0版本。

   <dependencies>
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore-hbase-client</artifactId>
            <version>1.2.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.aliyun.openservices</groupId>
                    <artifactId>tablestore</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.hbase</groupId>
                    <artifactId>hbase-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore</artifactId>
            <classifier>jar-with-dependencies</classifier>
            <version>4.2.0</version>
        </dependency>
    </dependencies>
            

HBase Client 1.2.x和其他版本(如 1.1.x)存在介面變化,而Tablestore HBase Client 1.2.x版本只能相容HBase Client 1.2.x。

如果需要使用HBase Client 1.1.x版本,請使用Tablestore HBase Client 1.1.x版本。

如果需要使用HBase Client 0.x.x版本,請參考遷移較早版本的 HBase

設定檔

從HBase Client遷移到Tablestore HBase Client,需要在設定檔中修改以下兩點:

  • HBase Connection類型

    Connection需要配置為TablestoreConnection。

        <property>
            <name>hbase.client.connection.impl</name>
            <value>com.alicloud.tablestore.hbase.TablestoreConnection</value>
        </property>
                        
  • Tablestore的配置項

    Tablestore是雲端服務,提供了嚴格的許可權管理。要訪問Tablestore,需要配置密鑰等資訊。

    • 必須配置以下四個配置項才能成功訪問Tablestore:

       <property>
                  <name>tablestore.client.endpoint</name>
                  <value></value>
              </property>
              <property>
                  <name>tablestore.client.instancename</name>
                  <value></value>
              </property>
              <property>
                  <name>tablestore.client.accesskeyid</name>
                  <value></value>
              </property>
              <property>
                  <name>tablestore.client.accesskeysecret</name>
                  <value></value>
              </property>
                                  
    • 下面為可選配置項:

              <property>
                  <name>hbase.client.tablestore.family</name>
                  <value>f1</value>
              </property>
              <property>
                  <name>hbase.client.tablestore.family.$tablename</name>
                  <value>f2</value>
              </property>
              <property>
                  <name>tablestore.client.max.connections</name>
                  <value>300</value>
              </property>
              <property>
                  <name>tablestore.client.socket.timeout</name>
                  <value>15000</value>
              </property>
              <property>
                  <name>tablestore.client.connection.timeout</name>
                  <value>15000</value>
              </property>
              <property>
                  <name>tablestore.client.operation.timeout</name>
                  <value>2147483647</value>
              </property>
              <property>
                  <name>tablestore.client.retries</name>
                  <value>3</value>
              </property>
                                  
      • hbase.client.tablestore.family與hbase.client.tablestore.family.$tablename
        • Tablestore只支援單列族,使用HBase API時,需要有一項family的內容,因此通過配置來填充此項family的內容。

          其中,hbase.client.tablestore.family為全域配置,hbase.client.tablestore.family.$tablename為單個表的配置。

        • 規則為:對錶名為T的表,先找hbase.client.tablestore.family.T,如果不存在則找hbase.client.tablestore.family,如果依然不存在則取預設值f。
      • tablestore.client.max.connections

        最大連結數,預設是300。

      • tablestore.client.socket.timeout

        Socket逾時時間,預設是15秒。

      • tablestore.client.connection.timeout

        連線逾時時間,預設是15秒。

      • tablestore.client.operation.timeout

        API逾時時間,預設是Integer.MAX_VALUE,類似於永不逾時。

      • tablestore.client.retries

        請求失敗時,重試次數,預設是3次。