开发者社区> 问答> 正文

如何从 HBase 迁移到表格存储

TableStore HBase Client 是基于 HBase Client 的封装,使用方法和 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 或 Table Store JAVA SDK,可以使用 exclusion 标签。下面示例中使用 HBase Client 1.2.1 版本和 Table Store JAVA SDK 4.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>



表格存储的配置项


表格存储是云服务,提供了严格的权限管理。要访问表格存储,需要配置秘钥等信息。


  • 必须配置以下四个配置项才能成功访问表格存储: <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
    表格存储只支持单列族,使用 HBase API 时,需要有一项 family 的内容,因此通过配置来填充此项 family 的内容。
    其中,hbase.client.tablestore.family为全局配置,hbase.client.tablestore.family.$tablename为单个表的配置。

  • 规则为:对表名为 [backcolor=transparent]T 的表,先找hbase.client.tablestore.family.T,如果不存在则找hbase.client.tablestore.family,如果依然不存在则取默认值 [backcolor=transparent]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 次。

展开
收起
云栖大讲堂 2017-10-25 11:09:49 2175 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
大数据时代的存储 ——HBase的实践与探索 立即下载
Hbase在滴滴出行的应用场景和最佳实践 立即下载
阿里云HBase主备双活 立即下载