欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

hbase-列存储动态数据库

程序员文章站 2022-05-17 15:42:53
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。 HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。 它是Hadoop的生态系统,提供对数据的随机实时读/写访 ......
1)   hbase是什么?

hbase是建立在hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。

hbase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了hadoop的文件系统(hdfs)提供的容错能力。

它是hadoop的生态系统,提供对数据的随机实时读/写访问,是hadoop文件系统的一部分。

人们可以直接或通过hbase的存储hdfs数据。使用hbase在hdfs读取消费/随机访问数据。 hbase在hadoop的文件系统之上,并提供了读写访问。

hbase-列存储动态数据库 

 

2)   hbase的存储机制

hbase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。

总之,在一个hbase:表是行的集合à行是列族的集合à列族是列的集合à列是键值对的集合,如图:

 hbase-列存储动态数据库

 

3)   hbase的特点
  1. 建立在hdfs之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式列存储的动态模式数据库,列式数据库(nosql)专门解决hadoop不擅长的工作。
  2. 采用bigtable的数据模型。增强的稀疏排序映射表(key/value),其中“键”是由行关键字、列关键字、时间截构成。
  3. 提供对大规模数据的随机、实时读写访问功能,其保存的数据可通过mapreduce处理。

 

4)   行数据库与列数据库的区别

 

hbase-列存储动态数据库

hbase-列存储动态数据库

 

hbase-列存储动态数据库

 

 

 

5)   hbase表特点:
  1. 表比较大,一个表有数十亿行,上百万列;
  2. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要冬天的增加,同一张表中的行也已有截然不同的列;
  3. 稀疏:空值列并不占用存储空间,列独立检索;
  4. 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时间戳;
  5. 数据类型单一:数据都是字符串,没有类型
6)   存储核心—hstore

hstore分为menstore和storefiles两部分。

        用户写入的数据首先会放入memstore,当memstore满了以后会flush成一个storefile(底层实现是hfile),当storefile文件数量增长到一定阈值,会触发compact合并操作,将多个storefiles合并成一个storefile,合并过程中会进行版本合并和数据删除

        hbase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了hbase i/o的高性能架构。

7)   hbase架构

 hbase-列存储动态数据库

 

一个hmaster(管理服务器)控制多个region server(数据服务器);

  1. hmater负责表的创建、删除、维护以及region的分配和负载均衡;
  2. region server负责管理维护region以及响应读写请求;
  3. 客户端与hmaster进行有关表的元数据操作,之后直接读写region servers。

 hbase-列存储动态数据库

 

master职责:

1. 为regionserver分配region;

2. 负责regionserver的负载均衡;

3. 垃圾文件回收;

4. 处理schema请求

zookeeper职责:

  1. 保证集群只有一个master;
  2. 监控region server状态,实时通知master;
  3. hbase目录入口地址;
  4. hbase的schema信息

region职责:

  1. 对数据的读写支持;
  2. 对region管理的支持;
  3. hbase目录入口地址;
  4. hbase的schema信息
8)   hbase 和 hdfs关系

hbase-列存储动态数据库

9)   hive与hbase区别

        相同点:都是架构在hadoop之上,都是用hadoop作为底层存储

        不同点:

          hive:

  1. 是批处理系统,目的是检索mapreduce jobs的编写工作;
  2. 是纯逻辑表并且是全表扫描,本身不存储和计算数据,完全依赖hdfs和mapreduce;
  3. 时效性低

        hbase:

  1. 是实时操作系统,目的是弥补hadoop的缺陷项目;
  2. 是物理表,采用列存储索引数据或实时数据,提供超大的内存hash表;
  3. 高时效性。