导读:HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSQL数据库,它的出现补齐了大数据场景下快速查询数据能力的短板。它非常适用于对平台中的热数据进行存储并提供查询功能。

作者:朱凯

来源:大数据DT(ID:hzdashuju)

01 概述

HBase的出现很好地弥补了大数据快速查询能力的空缺。让我们再次将时间拨回到2006年,那时Hadoop项目已经正式启动,开源社区已经拥有了HDFS和MapReduce。通过HDFS我们拥有了能够存储海量文件的分布式文件系统。通过MapReduce我们拥有了一种对海量数据进行批处理操作的途径。

但是这还不够,我们在大数据领域还没有一款能够称为数据库的产品。就在2006年年末,Google发表了著名的Bigtable论文。此后HBase便诞生了。

HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSql数据库。它也是Google BigTable的开源实现。HBase非常适合于对海量数据进行实时随机读写。HBase中的一张表能够支撑数十亿行和数百万列。

HBase从设计上来讲是一个由三类服务组成的Master/Slave架构服务。HBase Master进程负责处理Region分配、DDL(create、delete表)这类操。数据的读写由RegionServers进程负责处理。底层数据存储和集群协同管理则交由HDFS和Zookeeper进行管理,如图2-6所示。

▲图2-6 HBase逻辑架构图

HBase的所有数据最终都以HDFS文件的形式进行存储,Region Server服务通常是伴随着HDFS的Datanode进行部署的,这样可以更好地利用数据本地性的优势。

HBase采用主从架构。其分布式协调是通过Zookeeper进行管理的,而数据的物理存储最终会以文件的形式存储到HDFS。

02 数据模型

HBase是一个NoSQL数据库,它通过一个四维数据模型定义数据,如图2-7所示。

  • RowKey:HBase中的每行数据都必须拥有一个唯一的行键,它类似于关系型数据库中的主键。

  • Column Family:HBase中的每个列都归属于一个列簇,它类似于子表的概念。一个列簇对应一个MemStore对象。

  • Column:HBase用列来定义数据属性字段,和关系型数据库中的表字段类似。

  • Version:HBase中的数据是有版本概念的,每次新增或者修改数据都会产生一个新的版本。

▲图2-7 HBase的四维数据模型

HBase的数据模型由行键、列簇、列名和版本号组成。

03 Regions

HBase的表以RowKey的起止区间为范围被水平切分成了多个Region。每个Region中包含了RowKey从开始到结束区间的所有行。这些Region被分配到的集群节点称为RegionServers,RegionServers负责提供HBase中数据的读写功能。一个RegionServer可以容纳大约1000个Region,如图2-8所示。

▲图2-8 HBase Regions的逻辑结构

一个Region Server包含了多个Region,每个Region包含了一部分数据。

04 HBase Master

HBase Master主要负责Region的分配和一些DDL操作,如图2-9所示。HBase Master在启动、失败恢复或者负载均衡的时候为region指定所属的RegionServer,或者是创建、删除和更新表的这类操作。

▲图2-9 HBase Master的逻辑结构

HMaster作为主控节点并不直接存储数据,它只是做一些统筹分配和DDL操作。

05 Region Server

之前我们提到过,为了利用HDFS数据本地性的能力,通常会将RegionServer一同安装在HDFS的Datanode所在的服务器之上,如图2-10所示。RegionServer自身包含这么几个部分:

  • WAL:预写日志是HDFS上的一个文件,它是一种容灾策略。HBase为了提高写入性能,在写入数据的时候并不急于将数据保存到磁盘,而是将数据直接保留在内存中。但是内存中的数据并不是一直可靠的,所以HBase采用了预写日志的方案。当有新数据写入的时候,RegionServer先通过预写日志的方式记录数据,同时将数据放入内存对象MemStore中。当日志写完之后就立刻返回客户端告知写入成功。

  • BlockCache:数据块缓存是一种读缓存,客户端读取数据的时候会先从这个缓存中查找有没相应的数据。块数据缓存采用LRU失效策略。

  • MemStore:MemStore是一种写缓存,HBase为了提升写入性能不会直接将数据刷入磁盘而是先使用MemStore内存对象存储数据。再通过一个守护线程定期将MemStore刷入磁盘。在一个region中每个列簇都拥有一个MemStore。

  • Hfile:Hfile是HBase最终数据存储的载体,它本质上是HDFS上的一个文件。

▲图2-10 Region Server的逻辑结构

Region Server是HBase中真正存储数据的地方,它主要由WAL、BlockCache、MemStore和HFile组成。

06 MemStore与HFile

为了提高数据写入时的吞吐量,HBase并不会实时的将写入的数据直接刷入磁盘,而是先将数据放入内存中进行保管,MemStroe对象就是负责此项任务的逻辑对象,它将数据以Key-Values的形式保存在内存中。

将数据直接放入内存读写虽然很快,但这样做并不安全,因为一旦服务器重启数据便会全部丢失。所以HBase在此处设计了一种预写日志结合MemStroe的方式来解决这个问题。

当客户端向HBase发起一次写入请求的时候,HBase首先会通过RegionServer将数据写入预写日志,之后再用MemStroe对象将数据保存到内存之中。由于有了预写日志,当服务出现故障重启之后,Region可以通过日志将数据复原到MemStroe。

HBase的这种写入策略极大地提升了其数据写入的吞吐量,因为一旦写入日志的动作完成了就算写入数据成功。同时预写日志是对磁盘文件的顺序写入操作,其写入速度也十分的迅速。

但是,毕竟内存空间是有限的,MemStroe不可能没有限制的存储数据。所以当一个MemStroe存储的数据达到某个阈值的时候,HBase会将这个MemStroe的数据通过HFile的形式写入磁盘并清空该MemStroe。

HFile是HBase最终存储数据的载体,它本质上对应的是HDFS的文件。因为HFile是以经过排序的Key-Values对象的形式进行存储的,所以它的在写入文件的时候只需要采用顺序写,写入速度非常快。HFile的逻辑架构如图2-11所示。

07 使用场景

HBase由于它强大的存储和查询性能使得它在大数据领域成为一个多面手。

1. 平台存储

由于HBase构建在HDFS之上,这意味着它能像HDFS一样实现存储的线性扩容。同时它又能提供毫秒级的查询性能。所以它可以作为其他大数据组件的低层存储支持。比如Apache Kylin就是使用HBase作为其数据索引的存储载体。

▲图2-11 Region Server的逻辑结构

2. 应用存储/缓存

由于HBase出色的写入性能,它非常适合大规模数据的实时写入场景。比如在流计算、用户行为数据存储等场景就非常适合用HBase进行存储。

关于作者:朱凯,资深大数据专家和架构师,拥有10年IT从业经验,精通大数据、Java、Node.JS等技术。对大数据领域的主流技术与解决方案有深入研究,擅长分布式系统的架构设计与整合。曾主导过多款大数据平台级产品的规划设计与研发工作,一线实战经验丰富。

本文摘编自《企业级大数据平台构建:架构与实现》,经出版方授权发布。

延伸阅读《企业级大数据平台构建:架构与实现》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:资深大数据专家/一线架构师20000小时实际工作经验总结。以横向视角出发,拉通Hadoop体系技术栈,手把手教你快速构建一个真实可用、安全可靠的企业级大数据平台。

划重点????

干货直达????

  • 人工智能7大关键技术,终于有人讲明白了

  • 6种数据分析实用方法,终于有人讲明白了

  • 阿里动物园新成员来了,10本书带你读懂这个新物种

  • 爱因斯坦是人类历史上最伟大的科学家吗?

更多精彩????

在公众号对话框输入以下关键词

查看更多优质内容!

PPT | 读书 | 书单 | 硬核 | 干货 讲明白 | 神操作

大数据 | 云计算 | 数据库 | Python | 可视化

AI | 人工智能 | 机器学习 | 深度学习 | NLP

5G | 中台 | 用户画像 1024 | 数学 | 算法 数字孪生

据统计,99%的大咖都完成了这个神操作

????

什么是HBase?它是怎样工作的?终于有人讲明白了相关推荐

  1. 什么是YARN?跟HBase和Spark比优势在哪?终于有人讲明白了

    导读:HBase没有资源什么事情也做不了,Spark占用了资源却没有事情可做?YARN了解一下. 作者:朱凯 来源:大数据DT(ID:hzdashuju) 01 概述 随着Hadoop生态的发展,开源 ...

  2. 什么是HBase?终于有人讲明白了

    一.初识HBase HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文.HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeepe ...

  3. 当你工作几年就会明白,以下几个任何一个都可以超过90%程序员

    看到一段挺好的话分享大家:别说算法导论了,当你工作几年就会明白,以下几个任何一个都可以超过90%程序员: 1.把事情想明白,说清楚,跟别人商量好 2.写代码,注意边界条件和编码规范,写单测,基本做到无 ...

  4. python编程写完需要几年_30秒完成工作?终于知道Python这个技能有多重要!

    原标题:30秒完成工作?终于知道Python这个技能有多重要! 如今的时代,早已不是努力就能成功的时代了,只知道埋头苦干,日复一日做同样的工作,迟早在职场被踢出局. 只有用有限的时间做更多更有价值的事 ...

  5. 工作中总有人想和你抬杠该怎么解决?

    在职场中我们会碰到各式各样的人,有可能对方是自己的贵人,也有可能是暗藏在我们身边的小人,在无论什么样的人,会发现有些人总和你较真和你抬杠,无论你说的好还是坏,他就是喜欢跟你抬杠,工作中总有人想和你抬杠 ...

  6. (图文)HBASE的知识点以及工作原理的详细解释--架构

    HBase架构组件 从物理结构上讲,HBase由三种类型的服务器构成主从式架构.Region Servers为数据的读取和写入提供服务.当访问数据时,客户端直接和Region Servers通信.Re ...

  7. Hbase 各个角色的工作。

    HMaster的作用: 为region server 分配region: 负责region server的负载均衡,region分裂完成监控: 处理schema更新请求,数据表的创建,更新: HDFS ...

  8. 提升工作沟通,你需要明白这些内容

    为什么有些公司.某些行业成天开会? 而且似乎很喜欢开会.开长会? 为什么我们每天花在沟通上的时间要这么久,沟通完后发现事情都没怎么前进? 在工作中,沟通方式非常重要,针对不同情境要用不同类型的沟通. ...

  9. 为何python不好找工作k-为何有人说Python不好找工作?

    原标题:为何有人说Python不好找工作? Python编程近两年来可谓是C位出道,吸引了无数编程圈里圈外人的围观,有的人想要借机突破自己的职业瓶颈,有人想要借机突破自己的薪酬瓶颈,有人终于有机会转行 ...

最新文章

  1. python label textvariable_在子窗口中为标签的textvariable赋值失败时,有关,给,Label,问题...
  2. 【并查集】 HDU 4424 Conquer a New Region 贪心
  3. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车黑线循迹实验 四驱
  4. C#中读取文件内容本文分步介绍了如何从文本文件
  5. python 模块 chardet下载方法及介绍
  6. Win11任务栏大小怎么更改
  7. 移动端切图内容包括什么_ios移动端切图及前端规范
  8. 华为最新 5G 折叠机 MateXs 发布,起售价 19000 多元
  9. 通过调用外部exe的方法实现c#调用java
  10. sql: table,view,function, procedure created MS_Description in sql server
  11. sap模块介绍_一分钟掌握SAP小知识-系统基本操作
  12. 使用下面的方法有利于提高JS代码的执行效率
  13. Android 11.0 12.0拨打接听电话默认开启免提
  14. vcredist_x86.exe 静默安装方法
  15. 【java学习】多线程之高并发编程
  16. Spring Security Oauth2 JWT、第三方登录、单点登录讲解,并使用Oauth2.0结合微服务进行单点登录
  17. SSH上传提示:encountered 1 errors during the transfer错误解决办法
  18. perp系列之七:perp手册
  19. 自嘲是化解尴尬的高明手段
  20. ​word分节符与分页符的区别与用法

热门文章

  1. Web前端笔记-移动端触屏移动视角(two.js)
  2. Spring Boot笔记-普通异常错误截取及构造错误页面
  3. C++|Java混合实验-java搭建get方法靶场,Qt发送请求获取数据
  4. 编码风格工作笔记-初步模仿大佬编码风格
  5. Python学习笔记-猜数字游戏(学习语法)
  6. Qt工作笔记-moveToThread的基本使用以及让线程安全退出
  7. Qt学习笔记-简单的TCP程序
  8. Qt工作笔记-对QObject::connect函数进一步认识(重载)
  9. 实现电子词典_它是一部电子词典,一部翻译机,一部口语机还是一部出游的随身WiFi...
  10. 苹果笔记本电脑亮度无法调节_苹果更新笔记本加量还降价,教育优惠全面开启!...