首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HBase之基础特性及核心概念

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[43]篇文章,欢迎阅读和收藏】

1基本概念

数据库的初始基本操作通常被称为 CRUD ( Create,Read,Update,Delete ),具体指增、查、改、删。Hbase 中有与之相对应的一组操作,随后我们会依次介绍。这些方法都由 Htable 类提供。通过这个类,用户可以完成向 Hbase 存储和检索数据,以及删除无效数据之类的操作。在介绍这些方法之前,我们先来了解下它的大体特性。

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

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

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

Ø最后,创建 Htable 实例是有代价的,每个实例创建时候的检查和操作导致实例调用非常耗时,因此推荐用户只创建一次 Htable 实例,而且是每个线程创建一个,然后在客户端应用的生存期内复用这个对象。

2术语解释

LSM 树( Log-Structured Merge Tree ):日志结构的合并树( LSM-tree )是一种基于硬盘的数据结构,与 B-tree 相比,能显著地减少硬盘磁盘臂的开销,并能在较长的时间提供对文件的高速插入(删除)。

B+ 树:一种树数据结构,是一个 n 叉排序树,每个节点通常有多个孩子,一棵 B+ 树包含根节点、内部节点和叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上孩子节点的节点。B+ 树通常用于数据库和操作系统的文件系统中。

3 Hbase 的特殊属性

1. 版本

RowKey (行健)、 Column (列族和列)、 Version (版本)组合在一起成为 Hbase 中的一个单元格,但是因为有可能会有很多单元格的行和列式相同的,因此要区分不同的单元格可以使用版本。

RowKey 和 Column 的值是用字节数组表示的,而 Version 则使用一个长整型表示,这个长整型值是使用 java.util.Date.getTime() 或者 System.currentTimeMillis() 产生的这就意味着它的含义是 “ 当前时间和 1970-01-01 UTC 的时间差,单位毫秒 ” 。

在 Hbase 中,版本是按倒序排列的,因此读取这个文件的时候,最先找到的是最近的版本。

2. 排序

Get 和 Scan 操作返回的都是经过排序的数据。列在服务器端也是字典排序的,所以按照名称的字典顺序返回。总体来说,返回的数据首先按字典序排序,其次是列族,然后是列修饰符,最后是时间戳反向排序,最新的在最前面。

3. 列的元数据

对于 Hbase 表中的列族,除了 KeyValue 实例以外,没有关于元数据的描述, KeyValue 对象表示 Hbase 的最小单位是 cell 。Hbase 的表不仅在一行中支持许多列,而且支持行之间有不同的列,所以需要单独维护行和列之间的关系。获取列族完整列名的唯一方法就是处理所有行。

4. 连接查询

Hbase 不支持连接查询,用户想要在应用中实现连接查询,必须要自己实现。

5. 计数器

ICV 是 Hbase 的计数器,可以使用它完成一些诸如计算页面浏览量的操作。ICV 操作发生在 RegionServer 上,而不是在客户端,所以速度快,使用方式也没有那么繁琐。

6. 原子操作

类似 Java 的原子类, HTableInterface 接口也提供 checkAndPut 和 checkAndDelete 方法。

7. 行锁

Hbase API 中 put() 、 delete() 、 checkAndPut() 等修改操作是独立执行的这意味着在一个串行方式的执行中,对于每一行必须保证行级别的操作是原子性的。RegionServer 提供了一个行锁特性,这个特性保证了只有一个客户端能获取一行数据相应的锁,同时对该行进项修改。

9. 自动分区

Hbase 中的一个表的数据会被划分成很多 Region , Region 可以动态扩展,而且 Hbase 保证 Region 的负载均衡。Region 实际上是行健排序后的按规则分割的连续的存储空间。如果 Region 太大会被动态拆分,相反,多个 Region 会合并成一个较大的 Region 。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200128A004MU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券