HBase基本知识和应用场景

简介: HBase基本知识和应用场景

一、HBaseHBase以表的形式存储数据,表有行和列组成。)


1,什么是HBase?

HBase是一个分布式的、面向列的开源数据库。本质是一个数据库(适用于分布式的数据库,它面向列)。


image.png

HBase 结构,首先是一张表结构,然后与一般表不同的是,一般表:同一个列名下的那些一个个的单元格的值类型是相同的,而 HBase表是同一个列名下的那些一个个的单元格的值类型是不同,且数量不同...(相比于传统表,同列名下的一个个单元格,hbase 的单元格内容,可以装不定长的数据(一些以键值对形式存储的数据,一些则直接也是单个值的形式))✿ 传统表:单元格 是一个坑一个萝卜✿ HBase表:单元格 是一个坑 一把花生 (花生有双仁、单仁的哦)

(图:传统的表)


微信图片_2022050717255314.png



(图2:HBase 表)

 

列族里的数据通过列限定符或列来定位

通过列限定符来定位例如:Sname:nickName,Sage:female 等等;通过列来定位的例如:Sname:小红

image.png


2,HBase 中的表特点:

(1)大:一个表可以有上十亿行,上百万列

(2)面向列:列可以灵活指定,面向列(族)的存储和权限控制,列(簇)独立检索。

(3)稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

(4)无严格模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列

 

3.1,HTable一些基本概念1

在HBase中,HTable是其客户端和服务端通信的java api对象,主要提供对表的put/get/delete/scan等操作

    创建一个 hBase 对象:

Configuration conf = HBaseConfiguration.create();
HTable hTable = new HTable(conf, "tableName");

② HTable 的增删改查,这里简单举几个例子

●获取指定行某些单元格对应的值:public Result get(final Get get) throws IOException

●获取表名:public byte [] getTableName()

●添加值:public void put(final Put put) throws IOException

●删除指定单元格/行:void delete(Delete delete) throws IOException

......


ps: HBase Java API 代码开发


常用的几个主要HBase API类和数据模型之间的对应关系:



image.png


3.2, HTable一些基本概念2 【表结构逻辑视图

表:HBase用表来组织数据。

 

行:在表里,数据按行存储,行由行键唯一标识。行键没有数据类型,为字节数组byte[]。

 

列族:行里的数据按照列族分组,列族必须事先定义并且不轻易修改。表中每行拥有相同的列族。

 

列限定符:列族里的数据通过列限定符或列来定位,列限定符不必事先定义。

 

单元:存储在单元里的数据称为单元值,值是字节数组。单元由行键,列族或列限定符一起确定。

 

时间版本:单元值有时间版本,是一个long类型。

1、 行键(RowKey):

通过单个 row key 访问
② 通过 row key range
③ 全表扫描

2、 列簇(Column Family):

  • HBase 表中的每个列,都归属与某个列簇。列簇是表的 Schema 的一部分(而列不是)
  • 列名都以列簇作为前缀。例如:student:name,student:age,teacher:age 等等 (例子在文章最后的图1)
  • 访问控制、磁盘和内存的使用统计等都是在列簇层面进行的。
  • 列簇越多,在取一行数据时所要参与 IO、搜寻的文件就越多,所以,如果没有必要,不要设置太多的列簇,官网推荐是小于等于 3(最好就一个列簇)

3、 时间戳(TimeStamp):

■  时间戳可以由 HBase (在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。

■ 每个单元格都保存着同一份数据的多个版本。版本通过时间戳来索引。

■ 如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

每个单元格中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。HBase 在查询的时候,默认返回最新版本/最近的数据。如果需要读取旧版本的数据,可以指定时间戳。

□    为了避免数据存在过多版本造成的的管理(包括存储和索引)负担,HBase 提供了两种数据版本回收方式:

  保存数据的最后 n 个版本
  
保存最近一段时间内的版本(设置数据的生命周期 TTL)。

  用户可以针对每个列簇进行设置。

4、 单元格(Cell):

■ 由{RowKey, Column( =<Column Family> + <Qualifier>), Version} 唯一确定的单元。Cell 中的数据是没有类型的,全部是字节码形式存储。

 

 

二、HBase 的安装和应用


对应于Hadoop,HBase 也有三种运行模式:单机模式、伪分布式模式、分布式模式。

..........(安装过程遇到的bug,请参考文章)《HBase 安装之后版本的验证的bug:(错误的替换、找不到或无法加载主类、SLF4J)

 

 

 

附录


图1:HBase 表结构

16.png


图2:列名以列簇作为前缀的例子

17.png


列族里的数据通过列限定符或列来定位

通过列限定符来定位例如:Sname:nickName,Sage:female 等等;通过列来定位的例如:Sname:小红

相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
分布式数据库 Hbase
《HBase 基本知识介绍及典型案例分析》电子版地址
HBase 基本知识介绍及典型案例分析
72 0
《HBase 基本知识介绍及典型案例分析》电子版地址
|
存储 SQL 容灾
云数据库 HBase应用场景及优势
ApsaraDB for HBase是一个键值/宽表型的分布式数据库,适用于任何数据规模,可以提供单个毫秒响应的性能,尤其擅长低成本、高并发的场景,支持水平扩展到PB级存储和千万级QPS,在淘宝、支付宝、菜鸟等众多阿里巴巴核心服务中起到了关键支撑的作用。
1059 0
|
SQL 分布式数据库 数据库
Phoenix(HBase SQL)核心功能原理及应用场景介绍
概况了Phoenix(云HBase SQL) ) 入门到精通系列大多数内容,介绍了核心功能原理,相关生态工具及应用场景
12900 0
Phoenix(HBase SQL)核心功能原理及应用场景介绍
|
存储 分布式计算 分布式数据库
案例篇-HBase 基本知识介绍及典型案例分析
吴阳平 阿里巴巴 HBase 业务架构师
21906 0
|
存储 NoSQL 分布式数据库
案例篇-HBase 在滴滴出行的应用场景和最佳实践
李扬 滴滴出行 资深软件开发工程师
2453 0
|
存储 大数据 分布式数据库
|
存储 分布式计算 分布式数据库
HBase基本知识介绍及典型案例分析
本文来自于2018年10月20日由中国 HBase 技术社区在武汉举办的中国 HBase Meetup 第六次线下交流会。 HBase基本知识介绍及典型案例分析 PPT 下载:http://hbase.group/slides/162 本次分享的内容主要分为以下五点: HBase基本知识; HBase读写流程; RowKey设计要点; HBase生态介绍; HBase典型案例分析。
4789 0