码迷,mamicode.com
首页 > 其他好文 > 详细

HBase基本概念

时间:2015-11-07 00:44:45      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:

转自:http://www.bcmeng.com/hbase-basic/

 

Hbase概述

HBase构建在 HDFS 之上,Hbase内部管理的文件全部存储在HDFS 中

 

Hbase 特性

  • 容量巨大
  • 面向列
  • 稀疏性:空值不占用存储空间
  • 扩展性:热扩展
  • 高可靠性
  • 高性能
 

Hbase 表的特点

  • 无模式
  • 面向列
  • 稀疏 对于空( null )的列,并不占用存储空间
  • 数据多版本
  • 数据类型单一 Hbase中的数据都是字符串,没有类型。
 

hbase数据模型

 

Row Key

行键,Table的主键,Table中的记录按照Row Key排序。类型为Byte array

  • 不宜过长
  • 分布均匀
  • 唯一性
 

Column Family

列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成

 

Column

列 格式为:familyName:columnName

 

Version Number

版本号。默认值是系统时间戳。每个 rowkey 唯一。类型为long

 

Value (Cell)

具体的值,类型为Byte array

 

Hbase物理模型

物理上,表是按列族分开存储的,每个 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上

Region 虽然是分布式存储的最小单元,但并不是存储的最小单元。

  1. Region 由一个或者多个 Store 组成,每个 store 保存一个columns family ;
  2. 每个 Strore 又由一个 memStore 和 0 至多个 StoreFile 组成;
  3. memStore 存储在内存中, StoreFile 存储在 HDFS 上。
 

Hbase架构

技术分享

 

Hbase 基本组件

 

Client

包含访问 HBase 的接口,并维护 cache 来加快对 HBase 的访问

 

Zookeeper

  • 保证任何时候,集群中只有一个 master
  • 存贮所有 Region 的寻址入口
  • 实时监控 Region server 的上线和下线信息。并实时通知给 Master
  • 存储 HBase 的 schema 和 table 元数据
 

Master

  • 为 Region server 分配 region
  • 负责 Region server 的负载均衡
  • 发现失效的 Region server 并重新分配其上的 region
  • 管理用户对 table 的增删改查操作
 

Region Server

  • Region server 维护 region ,处理对这些 region 的 IO 请求
  • Region server 负责切分在运行过程中变得过大的 region
  • Region Server 提供了行锁

HRegionServer : HRegion :HStore = Column Family
HStore:

  • MemStore:用户数据首先写入MemStore。 flush
  • StoreFile:Hfile compact split
    Hbase 只有增加数据,所有更新和删除都是在 compact 过程中进行的。
    用户写操作只要写入内存就可以立即返回,保证I/O高性能。
 

Zookeeper 作用

Zookeeper避免了HMaster的单点问题 HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行

 

Write-Ahead-Log ( WAL )

技术分享

  • 用户每次写入 MemStore 的同时,也会写一份数据到HLOG文件中。只有当写入成功后才通知客户端该操作成功。
  • 每个RegionServer只有一个HLOG文件
  • HLOG文件定期会滚动更新,并删除旧的文件(已持久化到StoreFile中的数据)
 

Region 定位

第一次读取:

步骤1:读取ZooKeeper中ROOT表的位置。
步骤2:读取ROOT表中.META表的位置。
步骤3:读取.META表中用户表的位置。
步骤4:读取数据。

如果已经读取过一次,则root表和.META都会缓存到本地

则直接去用户表的位置读取数据

 

-ROOT- 表与 .META. 表

 

-ROOT- 表

-ROOT- 表包含 .META. 表所在的 region 列表,该表只会有一个 Region ;

Zookeeper 中记录了 -ROOT- 表的 location 。

 

.META. 表

.META. 表包含所有的用户空间 region 列表,以及
RegionServer 的服务器地址。

HBase基本概念

标签:

原文地址:http://www.cnblogs.com/cxzdy/p/4943957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!