HBase应用场景原理与基本架构

Posted 知了小巷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase应用场景原理与基本架构相关的知识,希望对你有一定的参考价值。

HBase概述

·HBase概述·

1. HBase是一个构建在HDFS上的分布式列存储系统

2. HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储

3. 从逻辑上讲,HBase将数据按照表、行和列进行存储


HBase与HDFS对比

    两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点

    HDFS适合批处理场景

        不支持数据随机查找

        不适合增量数据处理

        不支持数据更新

·HBase表的特点·

1. 大:一个表可以有数十亿行,上百万列

2. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列

3. 面向列:面向列(族)的存储和权限控制,列(族)独立检索

4. 稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏

5. 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳

6. 数据类型单一:HBase中的数据都是字符串,没有类型

·行存储与列存储·

1. 传统行式数据库

    数据是按行存储的

    没有索引的查询使用大量I/O

    建立索引和物化视图需要花费大量时间和资源

    面向查询的需求,数据库必须被大量膨胀才能满足性能要求

2. 列式数据库

    数据是按列存储-每一列单独存放 

    数据即是索引

    指访问查询涉及的列-大量降低系统I/O

    每一列由一个线索来处理-查询的并发处理

    数据类型一致,数据特征相似-高效压缩


HBase数据模型



HBase应用场景、原理与基本架构


HBase应用场景、原理与基本架构


HBase应用场景、原理与基本架构

HBase基本概念

HBase应用场景、原理与基本架构

HBase应用场景、原理与基本架构

· HBase数据模型·

1. HBase schema可以有多个Table

2. 每个表可由多个Column Family组成

3. HBase可以有Dynamic Column

4. 列名称是编码在cell中的

5. 不同的cell可以拥有不同的列


version number可由用户提供

    无需以递增的顺序插入

    每一行的rowkey必须是唯一的

Table可能非常稀疏

    很多cell可以是空的

Row Key是主键

· HBase支持的操作·

1. 所有操作均是基于rowkey的

2. 支持CRUD(Create、Read、Update和Delete)和Scan

3. 单行操作

    Put

    Get

    Scan

4. 多行操作

    Scan

    MultiPut

5. 没有内置join操作,可使用MapReduce解决


HBase物理模型

· HBase物理模型·

1. 每个column family存储在HDFS上的一个单独文件中

2. Key和Version number在每个column family中均有一份

3. 空值不会被保存

· HBase物理存储·

1. Table中的所有行都按照row key的字典序排列

2. Table在行的方向上分割为多个Region

3. Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region

4. Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上

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

    Region由一个或者多个Store组成,每个store保存一个columns family

    每个Strore又由一个memStore和0至多个StoreFile组成

    memStore存储在内存中,StoreFile存储在HDFS上

HBase应用场景、原理与基本架构

HBase应用场景、原理与基本架构

HBase应用场景、原理与基本架构


HBase架构


HBase应用场景、原理与基本架构

· HBase基本组件·

1. Client

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

2. Zookeeper

    保证任何时候,集群中只有一个master

    存贮所有Region的寻址入口

    实时监控Region server的上线和下线信息,并实时通知给Master

    存储HBase的schema和table元数据

3. Master

    为Region server分配region

    负责Region server的负载均衡

    发现失效的Region server并重新分配其上的region

    管理用户对table的增删改查操作

4. Region Server

    Region server维护region,处理对这些region的IO请求

    Region server负责切分在运行过程中变得过大的region

·Zookeeper作用·

1. HBase依赖ZooKeeper

2. 默认情况下,HBase管理ZooKeeper实例

    比如,启动或者停止ZooKeeper

3. Master与RegionServers启动时会向ZooKeeper注册

4. Zookeeper的引入使得Master不再是单点故障

HBase应用场景、原理与基本架构

HBase应用场景、原理与基本架构

 Write-Ahead-Log(WAL)

HBase应用场景、原理与基本架构

·HBase容错性·

1. Master容错:Zookeeper重新选择一个新的Master

    无Master过程中,数据读取仍照常进行

    无master过程中,region切分、负载均衡等无法进行

2. RegionServer容错:定时向Zookeeper汇报心跳,如果一段时间内未出现心跳

    Master将该RegionServer上的Region重新分配到其他RegionServer上

    失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer    

3. Zookeeper容错:Zookeeper是一个可靠地服务

    一般配置3或5个Zookeeper实例

·Region定位·

寻找RegionServer

    ZooKeeper

    -ROOT-(单Region)

    .META.

    用户表


-ROOT-

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

    Zookeeper中记录了-ROOT-表的location


.META.

HBase应用场景、原理与基本架构


HBase应用举例

·HBase应用举例·

1. 何时使用HBase?

    需对数据进行随机读操作或者随机写操作

    大数据上高并发操作,比如每秒对PB级数据进行上千次操作

    读写访问均是非常简单的操作


2. 什么公司在使用HBase?

    facebook

    twitter

    mozilla

    Adobe

    Meetup

    TREND

    NING

    Su.pr


3.  HBase在facebook应用—消息系统

    消息系统(聊天系统、邮件系统等)需求:

        一个较小的临时数据集,是经常变化的

        一个不断增加的数据集,是很少被访问的

    HBase同时解决了以上两种需求

HBase应用场景、原理与基本架构
HBase应用场景、原理与基本架构

End


以上是关于HBase应用场景原理与基本架构的主要内容,如果未能解决你的问题,请参考以下文章

Hbase的应用场景原理及架构分析

MapReduce 2.0应用场景原理与基本架构

HDFS基本架构原理与应用场景实践(附ppt)

Hbase基础(特点架构应用场景集群搭建HA设计)这一篇就够了

HDFS应用场景原理基本架构

Hbase原理与架构