一、什么是HBase?

HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

二、HBase的体系架构

HBase是由三种类型的服务器以主从模式构成的。这三种服务器分别是:HBase HMaster,Region server,ZooKeeper。

  • HBase HMaster负责Region的分配及数据库的创建和删除等操作。具体来说,HMaster的职责包括:
  1. HMaster负责region的分配。
  2. 调控Region server的工作
  3. 在集群启动的时候分配region,根据恢复服务或者负载均衡的需要重新分配region。
  4. 监控集群中的Region server的工作状态。
  5. 管理数据库。提供创建,删除或者更新表格的接口。
  • Region server负责数据的读写服务。用户通过沟通Region server来实现对数据的访问。

具体来说,RegionServer上存在若干个Region。HBase中的表是根据row key的值水平分割成所谓的region的。一个region包含表中所有row key位于region的起始键值和结束键值之间的行。每一个region的默认大小为1GB。集群中负责管理Region的结点叫做Region server。Region server负责数据的读写。每一个Region server大约可以管理1000个region。

  • ZooKeeper负责维护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及master的选举等)。HBase中ZooKeeper的职责包含:
  1. 维护HBase服务器是否存活
  2. 监控HBase服务器是否可访问的状态
  3. 提供服务器故障/宕机的通知
  4. 同时还使用一致性算法来保证服务器之间的同步。
  5. 同时也负责Master选举的工作。
  6. 需要注意的是要保证良好的一致性及顺利的Master选举,集群中的服务器数目必须是奇数,例如三台或五台。

三、HBase的表结构

每一行有一个RowKey用于唯一地标识和定位行,各行数据按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是两个列族,列族下又有多个具体列。(员工基本信息列族:姓名、年龄。详细信息列族:薪水、角色)。

HBase数据模型

  • 命名空间:命名空间是对表的逻辑分组,不同的命名空间类似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。
  • 表:对应于关系型数据库中的一张张表,HBase以“表”为单位组织数据,表由多行组成。
  • 行:由一个RowKey和多个列族组成,一个行有一个RowKey,用来唯一标示。
  • 列族:每一行由若干列族组成,每个列族下可包含多个列,如上ImployeeBasicInfoCLF和DetailInfoCLF即是两个列族。列族是列共性的一些体现。注意:物理上,同一列族的数据存储在一起的。
  • 列限定符:列由列族和列限定符唯一指定,像如上的name、age即是ImployeeBasicInfoCLF列族的列限定符。
  • 单元格:单元格由RowKey、列族、列限定符唯一定位,单元格之中存放一个值(Value)和一个版本号。
  • 时间戳:单元格内不同版本的值按时间倒序排列,最新的数据排在最前面

【赵渝强老师】HBase的体系架构的更多相关文章

  1. HBase体系架构和集群安装

    大家好,今天分享的是HBase体系架构和HBase集群安装.承接上两篇文章<HBase简介>和<HBase数据模型>,点击回顾这2篇文章,有助于更好地理解本文. 一.HBase ...

  2. 《BI那点儿事》SQL Server 2008体系架构

    Microsoft SQL Server是一个提供了联机事务处理.数据仓库.电子商务应用的数据库和数据分析的平台.体系架构是描述系统组成要素和要素之间关系的方式.Microsoft SQL Serve ...

  3. SaaS系列介绍之十三: SaaS系统体系架构

    1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...

  4. SOA——面向服务的体系架构

    上一篇博文中提到了"紧耦合"的现象.怎样解决?SOA.採用面向服务的体系架构. 一.What? SOA=Service-oriented Architecture面向服务的体系结构 ...

  5. Hadoop体系架构简介

    今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce ...

  6. 面向服务的体系架构(SOA)

    面向服务的体系架构(SOA) 1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概 ...

  7. InnoDB体系架构

    MySQL支持插件式存储引擎,常用的存储引擎则是MyISAM和InnoDB,通常在OLTP(Online Transaction Processing 在线事务处理)中,我们选择使用InnoDB,所以 ...

  8. Kylin工作原理、体系架构

    核心思想:预计算. 对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube,并存在HBase中,供查询时直接访问 将高复杂度的聚合运算.多表连接……操作转换成对预计算结果的查询.决定了Kyl ...

  9. HDFS的体系架构

    通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS.MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍.基本涵盖了Hadoop分布式平台的全部技术核心. H ...

  10. UBer面向领域的微服务体系架构实践

    介绍 最近,人们对面向服务的系统架构和微服务系统架构的缺点进行了大量的讨论.尽管仅仅在几年前,由于微服务体系架构提供了许多好处,如独立部署的灵活性.明确的所有权.提高系统稳定性以及更好地分离关注点等, ...

随机推荐

  1. 题解:CF1971B Different String

    题解:CF1971B Different String 题意 给予你一个字符串 \(s\),保证 \(s\) 的长度小于等于 \(10\). 任意排列 \(s\),使其与原 \(s\) 不同. 判断是 ...

  2. 记一次在openEuler系统下离线编译升级到openssh9.8p1

    缘起 由于某个项目上甲方对服务器进行漏洞扫描,系统为:openEuler 22.03 (LTS-SP4).提示现有OpenSSH版本存在漏洞,需要升级到openssh-9.8p1的版本(目前最新),遂 ...

  3. Gradle的安装和创建java项目(idea)

    安装 Gradle下载地址:http://services.gradle.org/distributions/ 下载后解压. 解压后的目录结结构如下: 新增环境变量 在path环境变量中添加以下内容: ...

  4. .NET周刊【7月第4期 2024-07-28】

    国内文章 .NET 高性能缓冲队列实现 BufferQueue https://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDyg BufferQueue 是一个用 . ...

  5. 一个基于 SourceGenerator 生成 从 dbReader转换为 class 数据的性能测试实验

    好奇 SourceGenerator 出现开始,好几年了,虽然一直好奇用SourceGenerator 生成代码 与 emit 等动态生成的代码会有多少差距, 但是一直特别懒,不想搞 其实 dappe ...

  6. 拜登开始在YouTube上打竞选广告了 —— 美国总统的竞选广告已经开始媒体投放了

    哈哈哈,老拜登,跑到YouTube上打广告了,这个画面真的太难想象,如果美国有"椰树"广告,估计拜登能弄个泳装上去打广告.有时不得不佩服西方搞的这种全民选举,最后搞的就和看小品似的 ...

  7. Analysis of Set Union Algorithms 题解

    题意简述 有一个集合,初始为空,你需要写一个数据结构,支持: 0 x 表示将 \(x\) 加入该集合,其中 \(x\) 为一由 \(\texttt{0} \sim \texttt{9}\) 组成的数字 ...

  8. DolphinScheduler 3.3.0版本更新一览

    Apache DolphinScheduler即将迎来3.3.0版本的发布,届时将有一系列重要的更新和改进.在近期的社区5月份用户线上分享会上,项目PMC 阮文俊为大家介绍了3.3.0版本将带来的主要 ...

  9. .NET 与 LayUI 实现高效敏捷开发框架

    前言 WaterCloud 是一个集成了 LayUI 的高效敏捷开发框架,专为 .NET 开发者设计. 它不仅支持多种 .NET 版本(.NET 4.5..NET Core 3.1..NET 5..N ...

  10. 05-canvas绘制简单图形之三角形

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...