(第6.1篇)大数据发展背后的强力推手——HBase分布式存储系统

来源:互联网 发布:ae数字矩阵 特效 编辑:程序博客网 时间:2024/05/14 11:53

前面的文章我们介绍了HDFS文件系统、Mapreduce计算框架、Zookeeper协作服务今天我们介绍可在廉价PC Server上搭建起大规模结构化存储集群的分布式存储系统——HBase。

 HBase


HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

本章内容:

1) Hbase简介

2) Hbase数据模型

3) Hbase基础原理

4) Hbase系统架构

5) Hbase基础操作

1. Hbase简介

HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作。

wKioL1jAy-bCpuW1AAGnj_qExNY828.png 

上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

Hbase适用场景:

1) 大数据量存储,大数据量高并发操作

2) 需要对数据随机读写操作

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

Hbase与HDFS对比:

wKiom1jAz1XhWEmSAAUSeXKxu8k044.png 

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

HDFS适合批处理场景,不支持数据随机查找,不适合增量数据处理,不支持数据更新

2. Hbase数据模型

HBase以表的形式存储数据。表由行和列族组成。列划分为若干个列族(row family),其逻辑视图如下:

行健

时间戳

列族contents

列族anchor

列族mime

com.cnn.www

T9

 

Anchor:cnnsi.com=“CNN”

 

T8

 

Anchor:my.look.ca=“CNN.com

 

T6

Contents:html=“<html>……”

 

Mime.type=“text/html”

T5

Contents:html=“<html>……”

  

T3

Contents:html=“<html>……”

  

几个关键概念:

1) 行键(RowKey)

行键是字节数组, 任何字符串都可以作为行键;

表中的行根据行键进行排序,数据按照Row key的字节序(byte order)排序存储;

所有对表的访问都要通过行键 (单个RowKey访问,或RowKey范围访问,或全表扫描)

2) 列族(ColumnFamily)

CF必须在表定义时给出

每个CF可以有一个或多个列成员(ColumnQualifier),列成员不需要在表定义时给出,新的列族成员可以随后按需、动态加入

数据按CF分开存储,HBase所谓的列式存储就是根据CF分开存储(每个CF对应一个Store),这种设计非常适合于数据分析的情形

3) 时间戳(TimeStamp)

每个Cell可能又多个版本,它们之间用时间戳区分

4) 单元格(Cell)

Cell 由行键,列族:限定符,时间戳唯一决定

Cell中的数据是没有类型的,全部以字节码形式存储

5) 区域(Region)

HBase自动把表水平(按Row)划分成多个区域(region),每个region会保存一个表里面某段连续的数据;

每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region;

当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Region 上。

wKioL1jAz3vCXiaBAAD2QldJ8C4220.png 

Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。

wKioL1jAz4qDLi2QAACgTROyDyU987.png 

 

3. Hbase架构基本组件

wKiom1jAz6WiZxgUAALwxWTI95s219.png 

上图看到HBase的基本组件

1) Client:

包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息。

2) Master

为Region server分配region

负责Region server的负载均衡

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

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

3) Region Server

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

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

4) Zookeeper作用

wKioL1jAz_ChqQ4CAADJRAXX0xY881.png 

通过选举,保证任何时候,集群中只有一个Master,Master与RegionServers 启动时会向ZooKeeper注册

存储所有Region的寻址入口

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

存储HBaseschematable元数据

默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper

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


    由于时间关系,今天只介绍了前3节,明天我会一早写上后边的两节(Hbase系统架构和Hbase基础操作)

wKiom1jI3RChETj0AABC3HPbV6s185.jpg



阅读全文
0 0