5分3D_5分3D官网 - 5分3D,5分3D官网诞生于2007年1月10日,与美国苹果公司(Apple Inc.)公布iPhone是同一天,也是较早建立的关于5分3D,5分3D官网专题网站,5分3D,5分3D官网一直是人气中文社区,也是全球关于5分3D,5分3D官网讨论的领先网上社区,出品了原创资讯软件.目前网站提供5分3D,5分3D官网软件评测,音乐,电影,铃声下载等服务.

一文讲清HBase的存储结构

  • 时间:
  • 浏览:1

![image](http://image.spacedong.top/Swan%20River.jpg) ### 前言 `Hbase` 是另4个多分布式的、多版本、面向列的开源 `KV` 数据库。运行在 `HDFS` 的基础上,支持 `PB` 级别、百万列的数据存储。 ### HBase的存储内外部 #### 逻辑存储内外部 通过下图直观地展示 `HBase` 的逻辑存储内外部: ![HBase 逻辑视图](http://image.spacedong.top/Hbase%20%E9%100%BB%E8%BE%91%E8%A7%86%E5%9B%BEjpg%20%281%29.jpg) 在本图中,列簇(`Column Family`)对应的值却说 `info` 和 `area` ,列( `Column` 假若称为 `Qualifier` )对应的却说 `name` 、 `age` 、 `country` 和 `city` ,`Row key` 对应的却说 `Row 1` 和 `Row 2`,`Cell` 对应的却说具体的值。 - `Row key` :表的主键,按照字典序排序。 - 列簇:在 `HBase` 中,列簇将表进行横向切割。 - 列:属于某另4个多列簇,在 `HBase` 中可不前要进行动态的换成。 - `Cell` : 是指具体的 `Value` 。 - `Version` :在这张图里面越来越显示出来,并也有是指版本号,用时间戳(`TimeStamp` )来表示。 看一遍这张图,是也有有点儿疑惑,为什么在么在么获取其中的一根绳子 绳子 数据呢?既然 `HBase` 是 `KV` 的数据库,越来越当然是以获取 `KEY` 的形式来获取到 `Value` 啦。在 `HBase` 中的 `KEY` 组成是原先的: ![Key 和 Value 图](http://image.spacedong.top/Hbase%20Key%E7%BB%84%E6%88%90.jpg) `KEY` 的组成是以 `Row key` 、`CF(Column Family)` 、`Column` 和 `TimeStamp` 组成的。 `TimeStamp` 在 `HBase` 中充当的作用却说版本号,假若在 `HBase` 所含着数据多版本的内外部,很多同另4个多 `KEY` 可不前要有多个版本的 `Value` 值(可不前要通过配置来设置几块个版本)。查询一段话是默认取回最新版本的那条数据,假若也可不前要进行查询多个版本号的数据,在接下来的进阶操作文章中会有演示。 ##### Region Server 和 Region 的关系 ![Region Server 和 Region 关系图](http://image.spacedong.top/Region%20Server%20%E5%92%8C%20Region%20%E7%9A%84%E5%85%B3%E7%B3%BB.jpg) - 另4个多 `Region Server` 却说另4个多机器节点(服务器) - 另4个多 `Region Server` 所含着多个 `Region` - 另4个多 `Region` 所含着多个列簇 `(CF)` - 另4个多 `Region Server` 中可不前要有多张 `Table`,一张 `Table` 可不前要有多个 `Region` #### 物理存储内外部 先来看这张图: ![Hbase架构图](http://image.spacedong.top/Hbase%E7%89%A9%E7%90%86%E5%AD%98%E5%82%A8%E6%9E%B6%E6%9E%84.png) 为了不混淆,亲戚亲戚大伙可不前要先把以下的概念一一对应起来 逻辑内外部 | 物理内外部 ---|--- Region Server | HRegion Server Region | HRegion CF | HStore(这里指的是Store) 在具体的物理内外部中 - `HRegion Server` 却说另4个多机器节点,所含多个 `HRegion` ,假若哪几种 `HRegion` 不一定是来自于同另4个多 `Table` ,负责响应的是用户的 `IO` 请求,和 `HDFS` 进行交互,是服务器中的另4个线程池池池池。 - `HRegion` 所含多个 `HStore` 。 - 另4个多 `CF` 组成另4个多 `HStore` ,默认是 `10 G`,假若大于 `10G` 会进行分裂。`HStore` 是 `HBase` 的核心存储单元,另4个多 `HStore` 由 `MemStore` 和 `StoreFile` 组成。 - `MemStore` 是一块内存,默认大小是 `128M`,假若超过了并也有大小,越来越就会进行刷盘,把内存里的数据刷进到 `StoreFile` 中。 - 在 `HStore` 对应着的是 `Table` 里面的 `Column Family`,不管有 `CF` 所含几块的数据,也有存储在 `HStore` 中,为了处置访问不同的 `HStore` 而意味的速率单位低下。 - `HRegion` 是 `Hbase` 中分布式存储和负载均衡的最小单元,但也有存储的最小单元。 - 另4个多 `Hstore` 可不前要有多个 `StoreFile` #### 在HBase中查找不同的CF的数据 不须同的 `CF` 中查询 `Row 3` 主键的数据,结果集如下: ![查找Row 3的数据](http://image.spacedong.top/%E9%100%BB%E8%BE%91%E5%92%8C%E7%89%A9%E7%90%86%E6%98%A0%E5%B0%84.png) 更加直观地显示,在 `HBase` 中是以 `CF` 为单元的存储内外部。 ### HBase的架构 如下图,`HBase` 的架构图,在 `HBase` 中亲戚亲戚大伙看一遍有 `Client`、`Zookeeper`、`HMaster` 和 `HRegion`。 ![HBase的架构图](http://image.spacedong.top/Hbase%E6%9E%B6%E6%9E%84%E5%9B%BEpng.png) - `Client` 是客户端,要求读写数据的发起者。 - `ZK` 集群是负责转发 `Client` 的请求和提供心跳机制,会让 `HRegion Server` 和 `HRegion` 注册进来,一起保存着 `Rowkey` 和 `Region` 的映射关系。 - `HMaster` 中可不前要有多个待命,必须另4个多在活跃。 #### Hbase读取数据的过程 `Client` 请求读取数据时,先转发到 `ZK` 集群,在 `ZK` 集群中寻找到相对应的 `Region Server`,再找到对应的 `Region`,先是查 `MemStore`,假若在 `MemStore` 中获取到数据,越来越就会直接返回,假若却说再由 `Region` 找到对应的 `Store File`,从而查到具体的数据。 在整个架构中,`HMaster` 和 `HRegion Server` 可不前却说同另4个多节点上,可不前要有多个 `HMaster` 所处,假若必须另4个多 `HMaster` 在活跃。 在 `Client` 端会进行 `rowkey`-> `HRegion` 映射关系的缓存,降低下次寻址的压力。 #### HBase 写入数据的过程 ![在HBase中写入数据的过程](http://image.spacedong.top/Hbase%E8%AF%BB%E5%8F%96%E6%95%B0%E6%8D%AE.png) 先是 `Client` 进行发起数据的插入请求,假若 `Client` 并也有存储了关于 `Rowkey` 和 `Region` 的映射关系一段话,越来越就会先查找到具体的对应关系,假若越来越一段话,就会在`ZK`中进行查找到对应 `Region server`,假若再转发到具体的 `Region` 上。所有的数据在写入的事先先是记录在 `WAL` 中,一起检查关于 `MemStore` 算是满了,假若是满了,越来越就会进行刷盘,输出到另4个多 `Hfile` 中,假若越来越满一段话,越来越却说先写进 `Memstore` 中,假若再刷到 `WAL` 中。 #### 福利 看一遍后,算是对 HBase 的存储内外部有所了解了呢?最后送两本电子书给亲戚亲戚大伙,一本是《HBase权威指南(中文版)高清完正版》,一本是《HBase实战中文版》,在公众号后台回复 HBase 关键字即可获取。 PS:画图的过程是真滴累啊!!! 题图:chichimaru ![image](http://image.spacedong.top/wechatqcode.jpg)

进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,却说承担相关法律责任。假若您发现本社区所含涉嫌抄袭的内容,欢迎发送邮件至: