大数据技术原理与应用(第四章 分布式数据库HBase)

本文详细介绍了HBase的设计原因、数据模型、实现原理和运行机制,包括其与传统关系型数据库的区别、四维数据坐标、列式存储的优势、系统架构以及HBase在性能优化和监控方面的方案,如HLog工作原理、性能检测工具和二级索引构建策略。

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

目录

4.1HBase简介

HBase设计原因

HBase与传统关系型数据库的联系与区别

HBase访问接口

4.2HBase数据模型

数据坐标

HBase数据的概念视图

HBase数据的物理视图(以列族为单位进行存储)

行式存储结构与列式存储结构

面向行与面向列的存储优势与缺点

4.3HBase实现原理

HBase的功能组件

HBase三层结构实现Region的寻址和定位

4.4HBase运行机制

HBase系统架构

客户端

Zookeeper服务器

Master(主服务器)

Region服务器

用户读写数据过程

StoreFile的合并与分裂过程

HLog的工作原理

4.5HBase应用方案

HBase在实际应用中的性能优化方法

提升读写性能

节省存储空间

HBase怎么检测性能

Master-status

Ganglia

OpenTSDB

Ambari

HBase之上如何构建SQL引擎和HBase二级索引

Coprocessor

HBase+Redis

HBase+Solr

HBase常用Java API编程实践

 

4.1HBase简介

HBase是BigTable的开源实现,最初为了解决谷歌公司内部大规模网页搜索问题。

网页搜索:第一步建立整个网页的索引,设计一个网页爬虫,将网页储存在BigTable当中,运行MapReduce;第二步搜索互联网网页,接受用户发起请求,在BigTable中查找对应网页,然后提交给用户。

分布式存储系统BigTable是基于谷歌分布式文件系统GFS(底层的分布式文件系统存储完全非结构化的数据)进行相关的数据储存,利用Chubby进行协同管理服务。具有很好的性能(可以支持PB级别的数据);具有非常好的可拓展性(用集群去存储几千台服务器完成分布式存储)。

HBase是高可靠、高性能、面向列、可伸缩的分布式数据库,可以用来存储非结构化和半结构化的松散数据。(基于HDFS文件存储系统,Zookeeper进行协同管理服务,Hadoop MapReduce进行海量数据处理)

HBase设计原因

基于HDFS和MapReduce,Hadoop可以解决大规模数据离线批量处理,但是没有办法满足大数据实时处理的需求;随着数据的大规模爆炸式增长,传统的关系型数据库的拓展能力非常有限。

HBase与传统关系型数据库的联系与区别

数据类型方面:传统关系型数据库使用的是经典的关系数据模型,具有多种数据类型和对应的存储方式(整型,字符型等);HBase将所有存储的值都设为未经解符的字符串(bytes),数据类型依靠应用开发人员读取后自行解释。

数据操作方面:关系型数据库中定义了非常多的数据操作(函数,表连接等);HBase只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有表的连接。

存储模型:关系型数据库基于行模式存储;HBase基于列存储。

数据索引方面:关系型数据库可以直接针对不同的列构建非常复杂的索引;HBase只支持对行键的简单索引,不支持列索引。

数据维护方面:关系型数据库在更新操作时,旧的数据会直接被新数据覆盖掉;HBase的更新操作是插入了新数据(时间戳标记),旧数据被保留,当过了设置的保留期限后才会被删除。

可伸缩性方面(可拓展性):关系型数据库很难实现水平拓展,最多实现纵向拓展(增加CPU个数,单核变双核,双核变四核,小型机变成大型机等);HBase借助分布式集群存储海量数据,很容易水平拓展。

HBase访问接口

提供一个原生Java API,Shell命令;为了支持异构系统在线访问可以通过Thrift Gateway;REST Gateway。

想做整个数据表分析时,提供SQL类型接口,Pig;数据仓库产品Hive(Hive SQL)。

4.2HBase数据模型

HBase是一个稀疏的多维度的排序的映射表; 通过行键,列族,列限定符(列)和时间戳四个元素来定位数据;每一个数据值都是未经解释的字符串(Bytes数组);支持列族动态拓展;一个行可以有一个行键Rowkey和任意多个列。

HBase更新数据时保留旧的版本的原因:HBase基于分布式文件系统HDFS存储数据,而HDFS只允许写入追加,不允许进行数据相关的直接修改。

数据坐标

传统关系型数据库的定位:通过一个行一个列两个维度可以确定唯一的数据;

HBase对数据的定位:四维坐标,通过行,列族,列限定符(列)可以确定唯一的单元格(具体存储数据的地方),同一单元格中的数据通过时间戳加以区分数据版本。

HBase数据的概念视图

HBase数据的物理视图(以列族为单位进行存储)

行式存储结构与列式存储结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值