Apache HBase

  • Apache HBase是Hadoop database,属于Hadoop生态系统。
  • 自从十四年前Google相继发布论文:《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A Distributed Storage System for Structured Data》后,开源界开始模仿论文设计开源版本的这三个系统,其中佼佼者就是Hadoop生态,分别对应于Hadoop,HDFS和HBase。
  • 经过十几年业界大规模的使用和锤炼,目前Hadoop生态已经成为一种事实上的业界规范,导致NoSQL的鼻祖Google的Bigtable都支持HBase wrapper,提供了Bigtable HBase client。

Tablestore

  • Tablestore,中文名表格存储,是阿里云自主研发的NoSQL数据库,不同于HBase使用了Java,表格存储和Bigtable一样使用了C++语言来开发。
  • 作为同类型的NoSQL数据库,HBase的大部分功能也同样存在于表格存储中,甚至大部分场景下性能更优,但是表格存储还是不同于HBase,有部分高级功能,HBase并不拥有,这个后面单独文章介绍。

HBase client

  • HBase client是HBase提供的便于用户访问HBase的客户端,支持读、写、扫描、批量、表管理等功能。

场景

Hadoop生态作为长久以来唯一的开源大数据解决方案,被广泛用于各个公司中。目前,大部分自建数据处理系统的公司使用了HBase等Hadoop生态的系统。当这部分用户想将数据迁移到阿里云的NoSQL数据库表格存储时,之前都需要用户重写客户端代码才能使用表格存储,虽然这种方式性能更好,对后续的使用也更友好的,但是还是初期比较耗时间,为了解决这个问题,表格存储年前也推出了TableStore HBase client。

如何使用

用户如果之前使用HBase Client访问HBase,现在只需要在项目中将对HBase Client的依赖 修改为对Tablestore HBase client的依赖,同时修改hbase-site.xml中的hbase.client.connection.impl值为com.alicloud.tablestore.hbase.TablestoreConnection即可。其他代码都不需要任何改动。

例子

代码位置

当前示例程序使用了HBase API访问表格存储服务,完整的示例程序位于Github的Aliyun Tablestore HBase client for Java项目中,目录位置是src/test/java/samples/HelloWorld.java。

配置项目依赖

Maven的依赖配置如下:

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

配置文件

hbase-site.xml中增加下列配置项:

<configuration><property><name>hbase.client.connection.impl</name><value>com.alicloud.tablestore.hbase.TablestoreConnection</value></property><property><name>tablestore.client.endpoint</name><value>endpoint</value></property><property><name>tablestore.client.instancename</name><value>instance_name</value></property><property><name>tablestore.client.accesskeyid</name><value>access_key_id</value></property><property><name>tablestore.client.accesskeysecret</name><value>access_key_secret</value></property><property><name>hbase.client.tablestore.family</name><value>f1</value></property><property><name>hbase.client.tablestore.table</name><value>ots_adaptor</value></property>
</configuration>

连接表格存储

通过创建一个TableStoreConnection对象链接表格存储服务。

        Configuration config = HBaseConfiguration.create();// 创建一个Tablestore ConnectionConnection connection = ConnectionFactory.createConnection(config);// Admin 负责创建、管理、删除等Admin admin = connection.getAdmin();

创建表

通过指定表名创建一张表,MaxVersion和TimeToLive都是用默认值。

        // 创建一个HTableDescriptor,只有一个列族HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));// 创建一个列族,MaxVersion和TimeToLive使用默认值,MaxVersion默认值是1,TimeToLive默认值是Integer.INF_MAX。descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));// 通过Admin的createTable接口创建表System.out.println("Create table " + descriptor.getNameAsString());admin.createTable(descriptor);

写数据

写入一行数据到表格存储。

        // 创建一个TablestoreTable,用于单个表上的读写更新删除等操作Table table = connection.getTable(TableName.valueOf(TABLE_NAME));// 创建一个Put对象,主键是row_1System.out.println("Write one row to the table");Put put = new Put(ROW_KEY);// 增加一列,表格存储只支持单列族,列族名称在hbase-site.xml中配置,如果没有配置默认是“f”,所以写入数据时COLUMN_FAMILY_NAME可以是空值put.addColumn(COLUMN_FAMILY_NAME, COLUMN_NAME, COLUMN_VALUE);// 执行Table的put操作,使用Hbase API将这一行数据写入表格存储table.put(put);

读数据

读取指定行的数据。

        // 创建一个Get对象,读取主键为ROW_KEY的行Result getResult = table.get(new Get(ROW_KEY));Result result = table.get(get);// 打印结果String value = Bytes.toString(getResult.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME));System.out.println("Get one row by row key");System.out.printf("\t%s = %s\n", Bytes.toString(ROW_KEY), value);

扫描数据

范围读取数据。

    扫描全表所有行数据System.out.println("Scan for all rows:");Scan scan = new Scan();ResultScanner scanner = table.getScanner(scan);// 循环打印结果for (Result row : scanner) {byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME);System.out.println('\t' + Bytes.toString(valueBytes));}

删表

使用Admin API删除一张表。

        print("Delete the table");admin.disableTable(table.getName());admin.deleteTable(table.getName());

完结

按照上面的步骤就可以使用Tablestore HBase client了,目前,已经有用户开始使用,后续,我们会根据用户的反馈持续优化Tablestore HBase client,使其性能能追赶到原生的表格存储(Tablestore)。

虽然通过Tablestore HBase Client也可以访问表格存储,但是还是建议用户直接使用表格存储的SDK访问表格存储,这样性能更好,功能更多,价格更便宜。表格存储的官方网站:https://cn.aliyun.com/product/ots

使用HBase Client访问阿里云NoSQL数据库表格存储相关推荐

  1. 2018年阿里云NoSQL数据库大事盘点

    2019独角兽企业重金招聘Python工程师标准>>> NoSQL一词最早出现在1998年.2009年Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨 ...

  2. c 访问阿里云mysql_本地怎样访问阿里云mysql数据库服务器

    全网最新活动请看下方内容或右侧内容! --------------- 本地怎样访问阿里云mysql数据库服务器,在阿里云上放数据库. 对于大多数小型或初期项目来说,我们可能常用的做法是先将web.数据 ...

  3. 阿里云物联网流转表格存储Tablestore

    首先简单的介绍下这两个阿里云的产品功能吧 阿里云物联网:物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端.此外,也提供方便快捷的设备管理能力,支持物 ...

  4. 解读NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎

    NoSQL最早起源于1998年,但从2009年开始,NoSQL真正开始逐渐兴起和发展.回望历史应该说NoSQL数据库的兴起,完全是十年来伴随互联网技术,大数据数据的兴起和发展,NoSQL在面临大数据场 ...

  5. NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎

    NoSQL最早起源于1998年,但从2009年开始,NoSQL真正开始逐渐兴起和发展.回望历史应该说NoSQL数据库的兴起,完全是十年来伴随互联网技术,大数据数据的兴起和发展,NoSQL在面临大数据场 ...

  6. 阿里云RDS数据库外网连接和内网连接有什么不同?

    内网就是云上环境访问 速度快 没有费用 公网就是可以飞云上环境访问 速度不一定 有费用 通过外网和内网均可访问阿里云 RDS 数据库.使用外网时,阿里云 RDS 数据库的连接带宽会受到限制.建议还是通 ...

  7. 阿里云ECS代理访问阿里云RDS MySQL数据库

    一.前言 阿里云RDS数据白名单一般只对内部的服务器开放,一般不会开放给外网直接访问,有时开发需要直接访问RDS数据库,平时我们使用的网络都是动态公网IP,经常会变化,设置白名单相对繁琐一点.想了一个 ...

  8. 公网访问阿里云RDS云数据库

    公网访问阿里云RDS云数据库 在之前的一篇Blog中教了大家如何将项目发布到云服务器上,这次就教大家如何使用公网进行云数据库的连接.当然大家也可以在自己的云服务器上安装MySQL等数据库进行连接(但缺 ...

  9. 平台篇-八年磨一剑,重新定义 HBase——HBase 2.0阿里云 HBase 解读

    八年磨一剑 1.1 HBase 的前世今生 关系型数据库的发展已经经历了 40 多年的历史了,而 HBase 以及大数据这套东 西的历史大概从 2006 年被认为是大数据的发起时期到现在,也就是 13 ...

最新文章

  1. R语言plotly可视化:plotly可视化分组归一化直方图(historgram)并在直方图中添加密度曲线kde、并在直方图的底部部边缘使用geom_rug函数添加边缘轴须图
  2. Gartner发布2020年数据与分析领域的十大技术趋势
  3. Modelsim仿真时不能编译`include文件解决办法
  4. 提前“剧透”能提高自监督学习性能吗?华为诺亚实验室说:不一定!
  5. 信息学奥赛一本通(1007:计算(a+b)×c的值)
  6. [转]tomcat6.0下的log4j日志文件配置过程
  7. 李想当年是被赶出汽车之家?真相了...
  8. 阿诺德图像加密c语言,基于Arnold变换的数字图像加密算法
  9. 微信开发经常会用到的一些方法
  10. POJ 1128 Frame Stacking 拓扑排序+暴搜
  11. Linux运维 第三阶段 (九)NFS
  12. JDK帮助文档无法打开的常见问题和解决办法
  13. 用Python放一场浪漫的烟花秀!
  14. 软路由安装php,爱快软路由上安装黑群晖方法教程
  15. 苹果x与苹果xs的区别_x和XS的区别到底在哪里,我来告诉你
  16. IE首页被篡改(手动修复)
  17. Android Wifi文件传输
  18. 北京飞漫软件创始人魏永明
  19. 假事务之名,深入研究UNDO与REDO
  20. 数据结构与算法篇-单链表

热门文章

  1. jsp mysql utf8_jsp操作mysql存取中文乱码
  2. vim之格式化代码功能——gg=G
  3. mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句
  4. mysql jdbc批量更新_jdbc批量更新数据
  5. ERROR: missing Change-Id in commit message footer
  6. hexo+git维护笔记
  7. 笔记-计算机网络基础-综合布线系统
  8. CentOS 6.8 搭建 ngrok 1.7 服务器 自测部署安装
  9. Geoserver中切割离线瓦片TileLayer预览时放大之后缺失
  10. Docker可视化工具portainer的安装与使用