HBase 简介以及个人理解(原理,基本概念,基本架构)
2015-08-22 21:01
573 查看
1.HBase简介
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。2.基础知识
2.1数据模型
HBASE中的每一张表,就是所谓的BigTable。稀疏表。RowKey 和 ColumnKey 是二进制值byte[],按字典顺序排序;
Timestamp 是一个 64 位整数,时间戳,每次数据操作对应的时间戳,可以看作是数据的version number;
value 是一个未解释的字节数组byte[]。
Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以有任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
逻辑数据模型
物理数据模型
2.1.1行
字符串、整数、二进制串甚至串行化的结构都可以作为行键。图中Row Key 是行键。
表按照行键的“逐字节排序”顺序对行进行有序化处理。
行的顺序也就是说按照行键的字典序进行排序的,可能是有这样的情况,
row-1
row-10
row-2
row-20
表内数据非常‘稀疏’,不同的行的列的数完全目可以大不相同
可以只对一行上“锁”
对行的写操作是始终是“原子”的
2.1.2列
列必须用‘族’(family)来定义。任意一列有如下形式,
“族:标签”
其中,族和标签都可为任意形式的串。
图中,cnnsi.com和my.look.ca就是标签
物理上将同“族”数据存储在一起
数据可通过时间戳区分版本
2.2物理存储
2.2.1Region
每个column family存储在HDFS上的一个单独文件中,空值不会被保存。Key 和 Version number在每个 column family中均有一份;HBase 为每个值维护了多级索引,即:
<key, column family, column name, timestamp>
Table中所有行都按照row key的字典序排列;
Table在行的方向上分割为多个Region;
Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;
Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。
2.2.2Store
Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。2.3HBase架构及基本组件
Hbase基本组件说明:
Client
包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息
Master
为Region server分配region
负责Region server的负载均衡
发现失效的Region server并重新分配其上的region
管理用户对table的增删改查操作
Region Server
Regionserver维护region,处理对这些region的IO请求
Regionserver负责切分在运行过程中变得过大的region
Zookeeper
通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
存贮所有Region的寻址入口
实时监控Region server的上线和下线信息。并实时通知给Master
存储HBase的schema和table元数据
默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper
Zookeeper的引入使得Master不再是单点故障
HBase中有两张特殊的Table,-ROOT-和.META.
.META.,记录了用户表的Region信息,.META.可以有多个regoin;
-ROOT-,记录了.META.表的Region信息,-ROOT-只有一个region
Zookeeper中记录了-ROOT-表的location;
Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问
参考内容
相关文章推荐
- 一个人如何完成一整个网站的开发(推荐好文,看完绝对让你回味无穷)
- Nutanix超融合架构概述
- 一个百万级PHP站点的网站架构
- Atitit.故障排除系列---php 计划网站数据库错误排除过程
- 【裤子】国外婚外恋网站被黑 3600万会员中有180万日本人
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案
- RESTFul架构详解
- Android - Flux架构
- 三层架构
- 架构设计:负载均衡层设计方案(5)——LVS单节点安装
- Intel Nehalem架构核心技术学习
- 网站的脉络梳理
- 第91讲:Akka第一个案例动手实战架构设计
- 第91讲:Akka第一个案例动手实战架构设计学习笔记
- 第1讲Spark纯实战公益大讲坛:通过案例实战掌握高可用HA下的Spark集群部署
- kphp框架网站开发之利用smarty模版生成网站地图sitemap全解
- 这个网站, 你值得拥有!
- 新网站如何做SEO?收录、排名So Easy
- 服务大学生的网站该如何运营
- 系统设计与架构笔记:对我新公司网站的技术架构初解