HBase的基本架构及其原理介绍
1、概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解。在这里,我觉得可以用HDFS的架构作为借鉴。(其实像Hadoop生态系统中的大部分组建的架构原理是类似,不信你往下看)
2、介绍架构
(1)HDFS例子
在这里我以我比较熟悉的HDFS分布式文件系统作为一个例子来简单说明一下。首先我对HDFS的架构做一个简单的说明:
HDFS分布式文件系统主要三个组建:NameNode和DataNode以及SecondaryNameNode。Namenode主要负责维护文件系统的元数据信息,DataNode则是负责实际存储对应数据分片的节点。
它的主要工作原理是客户端(client)通过发送一个请求(读写请求)时,首先会从NameNode中获取对应的元数据信息,这个元数据信息包含了对应 请求的数据所在的位置、大小等信息。获取到这些元数据信息后,client直接从对应的DataNode上执行对应的请求。这就是整个请求的响应过程。这 简单吧。当然这里并没有讲到SecondaryNameNode,它的作用主要是用来合并fsimage和edits文件来减少NameNode重启的时 间,还可以用来作为数据的一个冷备份。
好了,HDFS分布式文件系统的架构和原理简单的理解就是上面的内容了。下面来看看HBase的架构和原理吧。
(2)HBase(正题)
有了HDFS的基本原理对比之后,我们用同样的思维看HBase:与HDFS一样,HBase有Master和RegionServer(当然,这里还 需要用到Zookeeper)。在这里其实Zookeeper充当了类似NameNode的角色,Master的角色实际上是维护整个列式存储集群的运行 (如分配或切分Region,检查失效的RegionServer),RegionServer的角色当然跟Datanode的角色类似啦。
HBase的主要原理:客户端(Client)发送对应的请求(增、删、改、查),首先客户端会从Zookeeper中获取一个-ROOT-的表的元信 息(即-ROOT-的位置);第二步,客户端就去读取对应的-ROOT-表的信息,-ROOT-表中存储了对应的Meta的元数据信息;第三步,客户端知 道了Meta表元数据信息后就去读取对应Meta表的信息,Meta表存储了对应存放数据的RegionServer的位置信息等;第四步,就去获取对应 RegionServer上的数据。
HBase中比较重要的RegionServer,它上面包含的内容有:WAL(HLog)、BlockCache、Region、MemStore、StoreFile(HFile新版本的改进),下面主要讲一下这些个名词的原理和含义:
a) WAL:Write Ahead Log即提前写日志(Log),根据字面意思就知道,在写操作的时候,就是先要写入到该日志文件中。所有写操作都会先保证将数据写入这个Log文件后,才 会真正更新MemStore,最后写入HFile中。这样可以在RegionServer挂掉后,通过WAL来恢复数据,从而避免数据的丢失。一般一个 RegionServer只有一个WAL实例,也就是说一个RegionServer的所有WAL写都是串行的,你可能会觉得这会有性能问题,因而在 HBase 1.0之后,通过HBASE-5699实现了多个WAL并行写(MultiWAL),该实现采用HDFS的多个管道写,以单个HRegion为单位。
b) BlockCache:它是一个读缓存,即“引用局部性”原理。
c) Region:它是一个Table在一个RegionServer中的存储单元,也是分布式存 储的最小单元。一个Table可以有一个或多个Region,他们可以在一个相同的RegionServer上,也可以分布在不同的 RegionServer上,一个RegionServer可以有多个Region,他们分别属于不同的Table。Region由多个Store构成, 每个Store对应了一个Table在这个Region中的一个Column Family,即每个Column Family就是一个集中的存储单元,因而最好将具有相近IO特性的Column存储在一个Column Family,以实现高效读取(数据局部性原理,可以提高缓存的命中率)。Store是HBase中存储的核心,它实现了读写HDFS功能,一个 Store由一个MemStore 和0个或多个StoreFile组成。
d) MemStore是一个写缓存(In Memory Sorted Buffer),所有数据的写在完成WAL日志写后,再写入MemStore中,由MemStore根据一定的算法将数据Flush到地层HDFS文件中 (HFile),通常每个HRegion中的每个 Column Family有一个自己的MemStore。
e) HFile(StoreFile) 用于存储HBase的数据(Cell/KeyValue)。在HFile中的数据是按RowKey、Column Family、Column排序,对相同的Cell(即这三个值都一样),则按timestamp倒序排列。

HBase的基本架构及其原理介绍的更多相关文章
- Hbase架构与原理
Hbase架构与原理 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就 ...
- Hbase架构与原理(转)
Hbase架构与原理 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利 ...
- Kylin系列之二:原理介绍
Kylin系列之二:原理介绍 2018年4月15日 15:52 因何而生 Kylin和hive的区别 1. hive主要是离线分析平台,适用于已经有成熟的报表体系,每天只要定时运行即可. 2. Kyl ...
- 资源管理与调度系统-YARN的基本架构与原理
资源管理与调度系统-YARN的基本架构与原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了能够对集群中的资源进行统一管理和调度,Hadoop2.0引入了数据操作系统YARN. ...
- 03 Yarn 原理介绍
Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理 Hadoop的1.X架构的介绍 在1.x中的NameNodes只可能有一个,虽然可以通过Se ...
- HDFS原理介绍
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Googl ...
- [转]MySQL主从复制原理介绍
MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...
- 分布式文件系统FastDFS原理介绍
在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ...
- HBase 事务和并发控制机制原理
作为一款优秀的非内存数据库,HBase和传统数据库一样提供了事务的概念,只是HBase的事务是行级事务,可以保证行级数据的原子性.一致性.隔离性以及持久性,即通常所说的ACID特性.为了实现事务特性, ...
随机推荐
- CMD 规范是不是就是 commonJS 规范?
作者:giscafer链接:https://www.zhihu.com/question/20576942/answer/58094030来源:知乎著作权归作者所有,转载请联系作者获得授权. CMD是 ...
- Evolutionary Computing: 5. Evolutionary Strategies(1)
resource: Evolutionary computing, A.E.Eiben Outline What is Evolution Strategies Introductory Exampl ...
- BWT压缩算法(Burrows-Wheeler Transform)
参考: BWT (Burrows–Wheeler_transform)数据转换算法 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transfor ...
- hub config
@echo off title Selenium_Hub cd /d %~dp0 java -jar selenium-server-standalone-2.48.2.jar -role hub - ...
- Timing Attack 周边感应sql
直接上硬菜.盲注的一段语句: 1170 UNION SELECT IF(SUBSTRING(current,1,1)) = CHAR(119) , BENCHMARK(5000000,ENCODE(' ...
- 深入剖析tomcat 笔记——第8章 载入器
深入剖析tomcat 笔记 目录:
- Latex 建立带有竖线和编号的算法环境
Latex 建立带有竖线和编号的算法环境 Latex源码: \documentclass{article} \usepackage{amssymb} \usepackage{amsmath} \use ...
- C# WebForm内置对象2+Repeater的Command
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及 ...
- Java: RandomAccessFile
RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随 ...
- curl --connect-timeout 判断国内外网络windows 批处理
1.下载编译curl curl 下载地址:http://curl.haxx.se/download.html ,下载后解压到一个目录,使用vs开发者工具里的 “Visual Studio 命令提示(2 ...