Chapter4 分布式数据库HBase

HBase是一个开源的分布式数据库,源自Google的BigTable。它在Hadoop上运行,提供高可靠性、高性能、面向列和可伸缩的存储。HBase不同于传统的关系型数据库,采用列族存储,支持动态扩展,并且每个单元格有多版本。其数据模型包括行键、列族、列限定符和时间戳,数据通过行键进行索引。HBase通过Zookeeper进行协调管理,Master服务器负责表和Region的管理,Region服务器存储数据并处理用户请求。HBase适用于大数据场景,如搜索引擎、网页索引等,通过Coprocessor机制可以实现二级索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1概述

4.1.1从BigTable说起

HBase是BigTable的开源实现。
BigTable是一个分布式存储系统,它最初是用于解决谷歌公司内部的大规模网页所搜问题。

网页搜索可以分为两个阶段:
1.第一阶段:建立整个网页的索引。
通过爬虫不断的抓取各个网站的页面,将网页的每页一行存储到BigTable中。
在BigTable上运行MapReduce,MapReduce计算作业运行在整张表上,会生成索引,保证能够快速搜索相关网页。
2.第二阶段:搜索互联网网页。
搜索引擎接收用户发起的查询请求。
网络搜索应用通过查询建立好的索引,从BigTable得到网页。
最后将网页搜索结果返回给用户。

BigTable诞生之初主要就是满足互联网搜索引擎的基本需求。但现如今,BigTable作为分布式存储系统,不止用于网页搜索,还用于谷歌非常多的项目中,包括搜索、地图、财经、打印,以及一些社交网站、视频共享网站、博客系统等。

BigTable并非直接将底层磁盘作为存储,它是架构在GFS(谷歌分布式文件系统)基础之上的,并使用GFS作为底层数据存储。并且采用Chubby提供的协调管理服务。
在这里插入图片描述
BigTable受到广泛关注的原因包括:
1.它具有非常好的性能,可以支持PB级别的数据。
2.它具有非常好的可扩展性,可以用集群去存储几千台服务器,完成分布式存储。

4.1.2HBase简介

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库。
相比于只能存储完全非结构化数据的底层分布式文件系统,HBase可以用来存储非结构化和半结构化的松散数据。并且HBase的目标是通过水平扩展的方式,允许几千台服务器去存储海量文件,实现庞大的存储规模。

HBase和BigTable的底层技术对应关系如下:
在这里插入图片描述
关系型数据库已经流行许多年了,况且Hadoop已经有了HDFS和MapReduce,为什么需要HBase?

  1. Hadoop可以解决大规模数据的离线批量处理问题,但是Hadoop受限于Hadoop MapReduce编程框架的高延迟数据处理机制,随着数据的大规模爆炸式增长,Hadoop没有办法满足大规模数据实时处理的需求。
  2. 传统的关系型数据库的扩展能力非常有限,对大规模数据的存储能力不够。即使分库分表,也不能很好解决数据规模剧增导致的系统扩展性和性能问题。
  3. 传统的关系数据库可以应对一定的数据结构变化,但是需要进行停机维护。
  4. HDFS面向的是批量访问模式,而非随机访问模式。

HBase与传统的关系数据库的主要区别有哪些?

  1. 数据类型方面
    传统的关系数据库使用的是经典的关系数据模型,具有丰富的数据类型和存储方式。
    而HBase采用了更简单的数据模型,把数据存储为未经解释的字符串,需要依靠程序开发人员解释数据类型。
  2. 数据操作方面
    关系数据库中定义了非常多的数据操作,比如更新、删除、查询、多表连接等。
    而HBase只有简单的插入、查询、删除、清空等操作,避免了复杂的表与表之间的关系。
  3. 存储模式
    关系数据库基于行模式存储。
    而HBase基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的。
  4. 数据索引
    关系数据库可以直接针对各个不同的列,构建非常复杂的索引,以快速定位到相关记录。
    而HBase只支持对行键进行索引,所有访问方法,要么通过行键访问,要么通过行键扫描。
  5. 数据维护
    在关系数据库中进行数据更新操作的时候,原来的旧值会被新值替换掉。
    而HBase不存在替换操作,不会擅长旧的版本,而是生成一个新的版本,并且每生成一个新版本就会生成一个时间戳标识新版本。直到过了设置的期限之后,系统才会在后台把它清理掉。
  6. 可伸缩性
    关系数据库很难实现水平扩展,最多实现纵向扩展,比如增加CPU、单核变双核、双核变四核、增加内存条、增加磁盘。但纵向扩展的空间也是有限的。
    而HBase借助于分布式集群存储海量数据,能够轻易的通过在集群中增加或者减少硬件数量来实现性能的伸缩。
4.1.3HBase访问接口

在这里插入图片描述

类型 使用场合
原生Java API Hadoop MapReduce作业并行批处理HBase表数据
Shell命令 HBase管理使用
Thrift Gateway方式 其他异构系统在线访问HBase表数据
REST Gateway 支持REST风格的Http API访问HBase
Pig 数据统计
数据仓库产品Hive 以类似SQL语言的方式访问HBase

4.2HBase数据模型

4.2.1HBase数据模型概述

HBase是一个稀疏的多维度的排序的映射表。这张表的索引是四个元素:行键、列族、列限定符、时间戳。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值