HBase高手之路1-Hbase简介


image-20230220084553544

HBase高手之路1-Hbase简介

一、什么是HBase

1. HBase简介

HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储。

官方网站:http://hbase.apache.org

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

HBase是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。

2. HBase的发展过程

HBASE最初由James Bellefonds在2007年创建,并由Yahoo!分布式计算小组开发。自2007年以来,HBASE经过了多个版本的迭代发展,其中值得一提的有以下几个里程碑:

  • 2008年,HBase 0.1.0发布,定位为开源的、分布式的非关系型数据库。

  • 2009年,HBase
    0.20.0发布,引入了MapReduce和Hadoop的支持,使得HBase可以更好地与Hadoop生态系统结合。

  • 2011年,HBase 0.90.0发布,引入了新的协议版本和重大架构改进,如更好的负载均衡、更好的容错机制、更好的数据压缩和更好的复制。

  • 2012年,HBase 0.92.0发布,针对高容错性、写入效率和可伸缩性进行了优化,并引入了新的复制模型。

  • 2013年,HBase 0.94.0发布,引入了新的复制模型和快照功能,以及在内存中存储HFile块的功能,大大提高了其读性能。

  • 2014年,HBase 0.98.0发布,引入了对Hadoop 2.4以及以上版本的完全支持,并提高了对多租户和海量元数据管理的支持。

  • 2015年,HBase 1.0.0发布,引入了长期故障修复、更好的负载均衡、新的可伸缩架构和安装引导等改进。

  • 2017年,HBase 2.0.0发布,支持在分区内通过WAL捕获数据变化,而不是通过分区之间的HLog进行传输,以提高性能和可伸缩性。

HBase的持续发展在一定程度上推动了其生态系统的壮大,并且其在分布式存储和大数据处理领域中仍然具有广泛的应用前景。
在这里插入图片描述

二、HBase特点

1. 海量存储

Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。

2. 列式存储

这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。

3. 极易扩展

Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。

通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。

备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。

4. 高并发

由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。

5. 稀疏

稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

6. 强一致性读/写

  • HBASE不是“最终一致的”数据存储
  • 它非常适合于诸如高速计数器聚合等任务

7. 自动分块

  • HBase表通过Region分布在集群上,随着数据的增长,区域被自动拆分和重新分布

8. 自动RegionServer故障转移

9. Hadoop/HDFS集成

  • HBase支持HDFS开箱即用作为其分布式文件系统

10. MapReduce

  • HBase通过MapReduce支持大规模并行处理,将HBase用作源和接收器

11. Java Client API

  • HBase支持易于使用的 Java API 进行编程访问

12. Thrift/REST API

13. 块缓存和布隆过滤器

  • HBase支持块Cache和Bloom过滤器进行大容量查询优化

14. 运行管理

  • HBase为业务洞察和JMX度量提供内置网页。

三、HBase应用场景

1. 对象存储

不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中

2. 时序数据

HBase之上有OpenTSDB模块,可以满足时序类场景的需求

3. 推荐画像

用户画像,是一个比较大的稀疏矩阵,蚂蚁金服的风控就是构建在HBase之上

4. 时空数据

主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在HBase之中

5. CubeDB OLAP

Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求

6. 消息/订单

在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上

7. Feeds流

典型的应用就是xx朋友圈类似的应用,用户可以随时发布新内容,评论、点赞。

8. NewSQL

之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求

9. 其他

  • 存储爬虫数据
  • 海量数据备份
  • 短网址

四、HBase 与 NoSQL

  • NoSQL是一个通用术语,泛指一个数据库并不是使用SQL作为主要语言的非关系型数据库
  • HBase是BigTable的开源java版本。是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写NoSQL的数据库系统
  • HBase仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务
  • 主要用来存储结构化和半结构化的松散数据
  • Hbase查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务),从技术上来说,HBase更像是一个「数据存储」而不是「数据库」,因为HBase缺少RDBMS中的许多特性,例如带类型的列、二级索引以及高级查询语言等
  • Hbase中支持的数据类型:byte[]
  • 与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加存储和处理能力,例如,把集群从10个节点扩展到20个节点,存储能力和处理能力都会加倍
  • HBase中的表一般有这样的特点
    • 大:一个表可以有上十亿行,上百万列
    • 面向列:面向列(族)的存储和权限控制,列(族)独立检索
    • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏

五、RDBMS与HBase的对比

1. 关系型数据库

1.1 结构

  • 数据库以表的形式存在
  • 支持FAT、NTFS、EXT、文件系统
  • 使用主键(PK)
  • 通过外部中间件可以支持分库分表,但底层还是单机引擎
  • 使用行、列、单元格

1.2 功能

  • 支持向上扩展(买更好的服务器)
  • 使用SQL查询
  • 面向行,即每一行都是一个连续单元
  • 数据总量依赖于服务器配置
  • 具有ACID支持
  • 适合结构化数据
  • 传统关系型数据库一般都是中心化的
  • 支持事务
  • 支持Join

2. HBase

2.1 结构

  • 以表形式存在
  • 支持HDFS文件系统
  • 使用行键(row key)
  • 原生支持分布式存储、计算引擎
  • 使用行、列、列蔟和单元格

2.2 功能

  • 支持向外扩展
  • 使用API和MapReduce、Spark、Flink来访问HBase表数据
  • 面向列蔟,即每一个列蔟都是一个连续的单元
  • 数据总量不依赖具体某台机器,而取决于机器数量
  • HBase不支持ACID(Atomicity、Consistency、Isolation、Durability)
  • 适合结构化数据和非结构化数据
  • 一般都是分布式的
  • HBase不支持事务,支持的是单行数据的事务操作
  • 不支持Join

六、HDFS对比HBase

1. HDFS

  • HDFS是一个非常适合存储大型文件的分布式文件系统
  • HDFS它不是一个通用的文件系统,也无法在文件中快速查询某个数据

2. HBase

  • HBase构建在HDFS之上,并为大型表提供快速记录查找(和更新)
  • HBase内部将大量数据放在HDFS中名为「StoreFiles」的索引中,以便进行高速查找
  • Hbase比较适合做快速查询等需求,而不适合做大规模的OLAP应用

七、Hive对比Hbase

1. Hive

  • 数据仓库工具

    Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询

  • 用于数据分析、清洗

    Hive适用于离线的数据分析和清洗,延迟较高

  • 基于HDFS、MapReduce

    Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行

2. HBase

  • NoSQL数据库

    是一种面向列存储的非关系型数据库。

  • 用于存储结构化和非结构化的数据

    适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。

  • 基于HDFS

    数据持久化存储的体现形式是Hfile,存放于DataNode中,被ResionServer以region的形式进行管理

  • 延迟较低,接入在线业务使用

    面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度

3. 总结Hive与HBase

  • Hive和Hbase是两种基于Hadoop的不同技术
  • Hive是一种类SQL的引擎,并且运行MapReduce任务
  • Hbase是一种在Hadoop之上的NoSQL 的Key/value数据库
  • 这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到HBase,或者从HBase写回Hive

参考链接:

HBase 的特点是什么

HBASE学习(三)——hbase数据结构

猜你喜欢

转载自blog.csdn.net/W_chuanqi/article/details/129405566
今日推荐