《HBase权威指南》一3.1 概述-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

《HBase权威指南》一3.1 概述

简介:

本节书摘来异步社区《HBase权威指南》一书中的第3章,第3.1节,作者: 【美】Lars George 译者: 代志远 , 刘佳 , 蒋杰 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.1 概述

HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的操作。在介绍这个类的各个方法之前,让我们先了解一下它的大体功能。

所有修改数据的操作都保证了行级别的原子性,这会影响到这一行数据所有的并发读写操作。换句话说,其他客户端或线程对同一行的读写操作都不会影响该行数据的原子性:要么读到最新的修改,要么等待系统允许写入该行修改。更多内容请参考第8章。①

通常,在正常负载和常规操作下,客户端读操作不会受到其他修改数据的客户端影响,因为它们之间的冲突可以忽略不计。但是,当许多客户端需要同时修改同一行数据时就会产生问题。所以,用户应当尽量使用批量处理(batch)更新来减少单独操作同一行数据的次数。

写操作中涉及的列的数目不会影响该行数据的原子性,行原子性会同时保护到所有列。

最后,创建HTable实例是有代价的。每个实例都需要扫描.META.表,以检查该表是否存在、是否可用,此外还要执行一些其他操作,这些检查和操作导致实例调用非常耗时。因此,推荐用户只创建一次HTable实例,而且是每个线程创建一个,然后在客户端应用的生存期内复用这个对象。

如果用户需要使用多个HTable实例,应考虑使用HTablePool类(详情见4.4节),它为用户提供了一个复用多个实例的便捷方式。

文字以下是我们刚才讨论内容的几点总结。

  • 只创建一次HTable实例,一般在应用程序开始时创建。
  • 为执行的每一个线程(或者所使用的HTablePool)创建独立的HTable实例。
  • 所有的修改操作只保证行级别的原子性。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章