HBase 简介以及个人理解(原理,基本概念,基本架构)

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.表,最后才能找到用户数据的位置去访问
这里写图片描述

参考内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值