一、为什么使用HBase?

传统的RDBMS关系型数据库(例如SQL)存储一定量数据时进行数据检索没有问题,可当数据量上升到非常巨大规模的数据(TB或PB)级别时,传统的RDBMS已无法支撑,这时候就需要一种新型的数据库系统更好更快的处理这些数据。我们可以选择HBase。

二、HBase概述

HBase(Hadoop Database)是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。

它是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储。从逻辑上讲,HBase将数据按照表、行和列进行存储。

2.1 HBase与HDFS比较

HBase与HDFS两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点。但是,HDFS适合批处理的场景,它不支持数据随机查找,不支持增量数据处理,不支持数据更新。

2.2 HBase表的特点

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

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

3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;

4)稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏;

5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

6)数据类型单一:HBase中的数据都是字符串,没有类型。

2.3 行存储与列存储的比较

行存储:数据是按行存储的的;没有索引的查询使用大量I/O;建立索引和物化视图需要花费大量的时间和资源;面向查询的需求,数据库必须被大量膨胀才能满足性能要求。

列存储:数据是按每一列单独存放;数据即是索引;大量降低系统I/O;每一列由一个线索来处理(查询的并发处理);数据类型一致,数据特征相似(高效压缩)。

三、HBase数据模型

HBase是基于Google BigTable模型开发的,典型的key/value系统。

3.1 HBase的基本概念

Row Key(行键):表中每条记录的“主键”,方便快速查找;

Column Family(列族):拥有一个名称,包含一个或多个相关列;

Column:属于某一个Column Family,包含在某一个列中;

Version Number(版本):HBase能够为一个单元格元组(行、列族和列)保存多个值,每个单元格被称为一个记录的版本。默认值为系统的时间戳,类型为Long。默认情况下,HBase保留3个版本的记录。当然,我们也可以改变保留版本的数量,我们也可以通过制定来获取某个特定的版本。

时间戳:对于每个插入的数据,当前的时间戳与值是相关的,它表示了数值插入到表中的时间。

单元格:最小或基本的存储单位,在内部是一个列的实际值存储。所以插单元格数据时必须包含RowKey + ColumnFamily(列族名)+ ColumnName(列名)+ timeStamp:value。

HBase schema可以有多个Table,每一个表可以有多个Column Family组成,HBase可以有Dynamic Column(列名称是编码在cell中的,不同cell可以有不同的列),version number可由用户提供,无需以递增的顺序插入,每一行的Row Key必须是唯一的,Table可能是非常稀松的,很多的cell可以是空的。

3.2 HBase支持的操作

1)所有的操作均是基于Row Key的;

2)支持CRUD(Create、Read、Update、Delete)和Scan;

3)单行操作:Put、Get、Scan;

4)多行操作:Scan、MultiPut;

5)没有内置的join操作,可以使用MapReduce解决。

四、HBase物理模型

每一个Column Family存储在HDFS上的一个单独文件中;Key和Version Number在每个Column Family中均有一份,空值不会保存。

4.1 物理存储

1)Table中的所有行都按照Row Key的字典序排列;

2)Table在行的方向上分割为多个Region;

3)Region按大小分割的,每个表开始只有一个Region,随着数据增多,Region不断增大,当增大到一个阀值的时候,Region就会等分为两个新的Region,之后就会有越来越多的Region;

4)Region是HBase中分布式存储和负载均衡的最小单元。不同的Region分布到不同的RegionServer上;

5)Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或多个Store组成,每个store保存一个Column Family,每一个Store又有一个memStore和0至多个StoreFile组成,memStore存储在内存中,StoreFile存储在HDFS上。

五、HBase架构

5.1 HBase基本组件

1)Client

包含访问HBase的接口,并维护cache来加快对HBase的访问。

2)Zookeeper

保证任何时候,集群中只有一个master;存储所有Region的寻址入口;实时监控Region Server的上线和下线信息,并实时的通知给Master;存储HBase的schema和table的元数据。

3)Master

为Region Server分配Region;负责Region Server的负载均衡;发现失效的Region Server并重新分配其上的Region;管理用户对table的增删改查操作。

4)Region Server

Region Server维护Region,处理对这些Region的IO请求;Region Server负责切分在运行过程中变得过大的Region。

5.2 Zookeeper作用

HBase依赖zookeeper,默认情况下,HBase管理zookeeper实例;Master与RegionServer启动时会向zookeeper注册;zookeeper的引入是的Master不再是单点故障。

5.3 Write-Ahead-Log

5.4 HBase容错性

1)Master容错:zookeeper重新选择一个新的Master

无Master过程中,数据读取仍照常进行,Region切分、负载均衡等无法进行。

2)RegionServer容错:定时向zookeeper汇报心跳,如果一旦一定时间内未出现心跳

Master将该RegionServer上的Region重新分配到其他RegionServer上;失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer。

3)zookeeper容错:zookeeper是一个可靠的服务

一般配置3或5个zookeeper实例。

5.5关系数据库与HBase比较

5.6 HBase与Hadoop比较

HBase应用场景、原理与基本架构相关推荐

  1. HBase详细介绍:起源、实现原理、系统架构

    1.Hbase起源 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系 ...

  2. Tomcat 架构原理解析到架构设计借鉴

    ‍ 点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...

  3. HBase使用场景和成功案例 (转)

    HBase 使用场景和成功案例 有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多.因为HBase有许多公开的产品部署,我们正好可以 ...

  4. Serverless 实战 —— Serverless 的运行原理与组件架构

    Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...

  5. [强烈推荐] 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

    新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基 ...

  6. IoT 技术演进:揭秘无源零功耗物联网通信技术原理和总体架构

    近日,OPPO发布了<零功耗通信>报告,揭秘零功耗通信的概念.技术原理和总体架构.关键技术和挑战,以及与6G关键技术的融合. 自供电"黑科技",零功耗通信 零功耗设备主 ...

  7. Xen 工作原理与体系架构

    Xen 工作原理与体系架构 XEN工作原理 Xen通过hypervisor软件层来访问物理硬件,实现在一台单独的计算机上运行多个各自独立彼此隔离的子操作系统.hypervisor扮演着类似交通警察的角 ...

  8. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle...

    Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3.  ...

  9. 腾讯信息流推荐业务实践:内容分发场景的多目标架构实践

    猜你喜欢 0.2022年1月份热门报告盘点&下载1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

  10. 【推荐实践】内容分发场景的多目标架构实践

    猜你喜欢 0.2022年1月份热门报告盘点&下载1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

最新文章

  1. 拿到2021年灰飞烟灭的算法岗offer的大佬们,简历上都有什么?
  2. io密集型和cpu密集型java,如何设计CPU密集型与I/O密集型程序
  3. Python中的if __name__ == ‘__main__‘
  4. 为什么用redis?
  5. Visual Studio Code设置中文包/配置中文语言
  6. 【Python】大神教你五分钟搞清楚Python函数的参数!
  7. 从三大顶会论文看百变Self-Attention
  8. MinGW和MSYS的自动安装 【转】
  9. oracle修改表字段
  10. 逆向工程核心原理读书笔记-API钩取之计算器显示中文数字
  11. 回归树与基于规则的模型(part3)--回归模型树
  12. java 和 区别_java 和 =的区别
  13. 听红宝书译者谈Web视角下的前端开发
  14. 使用IDEA 创建SpringBoot项目
  15. 3389改为3390端口如何改
  16. 计算机学win7画图,win7自带画图工具
  17. holtek c语言,合泰单片机c语言教程
  18. 啦啦外卖43.8至尊版全开源最新版
  19. Solaris 查看系统信息命令
  20. VMware14配置虚拟网络详解

热门文章

  1. android 计算地图上两点距离的算法
  2. 华为人才招聘-名企面试经验
  3. 单点登录--Day10
  4. 到底要不要买彩票,纠结了
  5. 2021年中国免疫抑制剂市场趋势报告、技术动态创新及2027年市场预测
  6. GCMS测试中常见问题
  7. 使用计算机比喻的心理学研究取向,积极心理学是在( )出现的心理学研究取向。...
  8. esp8266 12e 光控控制板载LED灯
  9. SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xce in position 0: invalid continuatio
  10. java基础(环境,java平台,jvm,异常,面向对象,数组,IO流,容器等等)