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只支援單列族,使用HBase API時,需要有一項family的內容,因此通過配置來填充此項family的內容。
-
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次。
- hbase.client.tablestore.family與hbase.client.tablestore.family.$tablename
-