【HBase】底层原理
系统架构
在文章【HBase】基本介绍和基础架构中已经有简单介绍
Client —— 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如region的位置信息。
Zookeeper:
1.保证任何时候,集群中只有一个master
2.存贮所有Region的寻址入口----root表在哪台服务器上。
3.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
4.存储Hbase的schema,包括有哪些table,每个table有哪些column family
Master:
1.为Region server分配region
2.负责region server的负载均衡
3.发现失效的region server并重新分配其上的region
4.HDFS上的垃圾文件回收
5.处理schema更新请求
Region Server:
1.Region server维护Master分配给它的region,处理对这些region的IO请求
2.Region server负责切分在运行过程中变得过大的region
client访问HBase数据的过程中并不需要HMaster的参与,是直接通过ZooKeeper读取HRegionServer中Meta表存放的HRegion位置
表数据模型
基本介绍在【HBase】表模型和基本操作介绍
注意:
1.列族的访问控制、磁盘和内存的使用统计都是在列族层面进行,一般一张表不要设置太多列族,因为列族越多,读取一行数据时所要参与IO、搜寻的文件就越多
2.每条数据默认3个版本号
物理存储
1.Table中所有行都按照rowKey的字典顺序排列,并且在行的方向上分割为多个HRegion
2.HRegion是HBase中分布式存储和负载均衡的最小单元,不同的HRegion可以分布在不同的HRegionServer上,但同一个HRegion不会拆分到不同的HRegionServer
3.HRegion由多个Store组成,每个Store保存一个列族(Column Family)
4.HFile是一种文件存储格式,类似于ORC、Parquet
meta表的数据信息
ROW COLUMN+CELL
hbase:namespace,,1557280798528. column=info:regioninfo, timestamp=1557280800325, value={ENCODED => 56c88e849283c869e74095d5
56c88e849283c869e74095d5bf616b4 bf616b49, NAME => 'hbase:namespace,,1557280798528.56c88e849283c869e74095d5bf616b49.', START
9. KEY => '', ENDKEY => ''}
hbase:namespace,,1557280798528. column=info:seqnumDuringOpen, timestamp=1557280800325, value=\x00\x00\x00\x00\x00\x00\x00\x
56c88e849283c869e74095d5bf616b4 02
9.
hbase:namespace,,1557280798528. column=info:server, timestamp=1557280800325, value=node02.hadoop.com:60020
56c88e849283c869e74095d5bf616b4
9.
hbase:namespace,,1557280798528. column=info:serverstartcode, timestamp=1557280800325, value=1557280788349
56c88e849283c869e74095d5bf616b4
9.
myuser,,1557285598626.9a6ee8080 column=info:regioninfo, timestamp=1557285599647, value={ENCODED => 9a6ee8080ee16457bb791a10
ee16457bb791a10cca6c498. cca6c498, NAME => 'myuser,,1557285598626.9a6ee8080ee16457bb791a10cca6c498.', STARTKEY => ''
, ENDKEY => ''}
myuser,,1557285598626.9a6ee8080 column=info:seqnumDuringOpen, timestamp=1557285599647, value=\x00\x00\x00\x00\x00\x00\x00\x
ee16457bb791a10cca6c498. 02
myuser,,1557285598626.9a6ee8080 column=info:server, timestamp=1557285599647, value=node02.hadoop.com:60020
ee16457bb791a10cca6c498.
myuser,,1557285598626.9a6ee8080 column=info:serverstartcode, timestamp=1557285599647, value=1557280788349
ee16457bb791a10cca6c498.
user,,1557283951792.5b54e4569a9 column=info:regioninfo, timestamp=1557284223555, value={ENCODED => 5b54e4569a9e7f541340077f
e7f541340077ff35c168f. f35c168f, NAME => 'user,,1557283951792.5b54e4569a9e7f541340077ff35c168f.', STARTKEY => '',
ENDKEY => ''}
user,,1557283951792.5b54e4569a9 column=info:seqnumDuringOpen, timestamp=1557284223555, value=\x00\x00\x00\x00\x00\x00\x00\x
e7f541340077ff35c168f. 05
user,,1557283951792.5b54e4569a9 column=info:server, timestamp=1557284223555, value=node01.hadoop.com:60020
e7f541340077ff35c168f.
user,,1557283951792.5b54e4569a9 column=info:serverstartcode, timestamp=1557284223555, value=1557280783177
e7f541340077ff35c168f.
3 row(s) in 0.0500 seconds
【HBase】底层原理的更多相关文章
- HBase 底层原理详解(深度好文,建议收藏)
HBase简介 HBase 是一个分布式的.面向列的开源数据库.建立在 HDFS 之上.Hbase的名字的来源是 Hadoop database,即 Hadoop 数据库.HBase 的计算和存储能力 ...
- 从HBase底层原理解析HBASE列族不能设计太多的原因?
在之前的文章<深入探讨HBASE>中,笔者详细介绍了: HBase基础知识(包括简介.表结构).系统架构.数据存储 WAL log和HBase中LSM树的应用 HBase寻址机制 mino ...
- HBase底层存储原理
HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已! 首先HBase不同于一般的关系数据库, 它是一个适合于非结构化数据存储的数 ...
- HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已!
理解HBase(一个开源的Google的BigTable实际应用)最大的困难是HBase的数据结构概念究竟是什么?首先HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不 ...
- Hadoop 综合揭秘——HBase的原理与应用
前言 现今互联网科技发展日新月异,大数据.云计算.人工智能等技术已经成为前瞻性产品,海量数据和超高并发让传统的 Web2.0 网站有点力不从心,暴露了很多难以克服的问题.为此,Google.Amazo ...
- HBASE工作原理
如上图所示:首先我们需要知道 HBase 的集群是通过 Zookeeper 来进行机器之前的协调,也就是说 HBase Master 与 Region Server 之间的关系是依赖 Zookeepe ...
- Hbase概念原理扫盲
一.Hbase简介 1.什么是Hbase Hbase的原型是google的BigTable论文,收到了该论文思想的启发,目前作为hadoop的子项目来开发维护,用于支持结构化的数据存储. Hbase是 ...
- (转)HBase 的原理和设计
转自:HBase的原理和设计 HBase架构:
- Neo4j图数据库简介和底层原理
现实中很多数据都是用图来表达的,比如社交网络中人与人的关系.地图数据.或是基因信息等等.RDBMS并不适合表达这类数据,而且由于海量数据的存在,让其显得捉襟见肘.NoSQL数据库的兴起,很好地解决了海 ...
- 【T-SQL进阶】02.理解SQL查询的底层原理
本系列[T-SQL]主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式 ...
随机推荐
- phoenix 索引实践
准备工作 创建测试表 CREATE TABLE my_table ( rowkey VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR, v3 V ...
- python 自动打包,发送邮件(包括附件)至多个收件人(qq邮箱,163邮箱)
-----------------------------打包部分---------------------------------- import zipfile def zipDir(dirpat ...
- 转:Cookies 和 Session的区别
转自:http://blog.csdn.net/axin66ok/article/details/6175522 1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在 ...
- 彻底弄懂GMT、UTC、时区和夏令时
前言 格林威治时间.世界时.祖鲁时间.GMT.UTC.跨时区.夏令时,这些眼花缭乱的时间术语,我们可能都不陌生,但是真正遇到问题,可能又不那么确定,不得不再去查一查,处理完可能过段时间又忘记.今天,我 ...
- Springboot:JSR303数据校验(五)
@Validated //开启JSR303数据校验注解 校验规则如下: [一]空检查 @Null 验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @No ...
- 《剑指Offer》- 连续子数组的最大和或最小和
前言 本文是<剑指Offer>系列(JavaScript版)的第一篇,题目是"连续子数组的最大和或最小和". 话不多说,开始"打怪"修炼... 一. ...
- serialize和json_encode 区别
(1)serialize主要用于php的序列化,存储到文件或者数据库中,json_encode 也是序列化,但是 主要用于与其他语言比如js进行交互使用,对于传输来说,json有许多优点. (2)在显 ...
- Django Channel实时推送与聊天
先来看一下最终的效果吧 开始聊天,输入消息并点击发送消息就可以开始聊天了 点击 “获取后端数据”开启实时推送 先来简单了解一下 Django Channel Channels是一个采用Django并将 ...
- hdu_2570 迷障 贪心
迷瘴 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- 标准库sys
sys模块的主要函数介绍,结合官方文档说明和实例.This module provides access to some variables used or maintained by the int ...