文档视界

最新最全的文档下载
当前位置:文档视界 > Hadoop生态系统(Part10-HBase)V2.0

Hadoop生态系统(Part10-HBase)V2.0

Hadoop生态系统

(第十部分HBase)

浪潮通信信息系统有限公司

2

HBase的位置

Hadoop生态系统(Part10-HBase)V2.0

Hadoop生态系统(Part10-HBase)V2.0

3

目录

1Hbase概述

2Hbase逻辑模型

3Hbase系统架构及实现

4Hbase编程

5Hbase数据导入

6Hbase调优

4

HBASE是什么?

是Google Bigtable(基于Google File System)的开源山寨版本。是一个建立的Apache HDFS 之上的NoSQL分布式数据库系统具有高可靠性、高性能、列存储、可伸缩、实时读写的特点.

能够利用Hadoop MapReduce来处理HBase中的海量数据.

Hbase能干什么

?存储非结构化数据

?快速定位查询可伸缩的数据库系统

Hbase适用哪种环境

?Hbase能满足大数据量的随机访问需求

?与HDFS同属一系能够很方便的以hdfs文件系统

5大量数据,高并发随机查询?Facebook: 收件箱

?Alipay:交易记录

海量数据,低并发区段查询

?Facebook :实时ETL

?Trend Micro :日志存储

实时统计

?Facebook :分享插件统计

?StumbleUpon :广告平台HBASE 特点

原子计数器高并发写入内存Hold 住热数据水平扩展以提高性能日志数据有序存储水平扩展以提高容量

6

VS 关系数据库

对比项HBase关系型数据库

数据类型HBase只有bytes类型拥有丰富的数据类型

数据操作只有很简单的操作,如插入,删除等,

各种各样的连接操作,函数。

表跟表是分离的,之间没有复杂的关系

数据维护更新操作时,会将原有数据保留,所以它

直接修改原数据

实际上是插入了新数据

存储方式基于列存储的,每个列族都有自己的文件

基于表结构和行来存储的

,不同的列族是分开的

可扩展性支持随意的扩展,而不需要改变表内原有的

修改表结构,需要复杂的操作

数据

事务没有复杂的事务支持,只有简单的行级事务强事务保证

索引支持二级索引拥有丰富的索引支持

HBASE

HBASE

9

目录

1Hbase概述

2Hbase逻辑模型

3Hbase系统架构及实现

4Hbase编程

5Hbase数据导入

6Hbase调优

10

逻辑结构

HBase表

?稀疏的、面向列的多维度排序Map;

?以表的形式存储数据;

?表由行和列组成,列划分为若干个列族(row family)。

Row Key

?用来检索记录的主键

?访问hbase table中的行,只有三种方式:

?通过单个row key访问

?通过row key的range

?全表扫描

?Row key行键(Row key)可以是任意字符串(最大长度是64KB,实际应用中长度一般为10-100bytes);

在hbase内部row key保存为字节数组。

?存储时数据按照Row key的字典序(byte order)排序存储。

?设计key时,要充分利用排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

11逻辑结构

Columns family列簇

?hbase表中的每个列,都归属与某个列族。

?列族是表的schema的一部分(而列不是)必须在使用表之前定义。

?列名都以列族作为前缀。例如courses:history,courses:math都属于courses 这个列族。

?访问控制、磁盘和内存的使用统计都是在列族层面进行的。

?允许一些应用可以添加新的基本数据、

?一些应用可以读取基本数据并创建继承的列族、

?一些应用则只允许浏览数据,

?甚至可能因为隐私的原因不能浏览所有数据

12

逻辑结构

Time Stamp时间戳:

?版本通过时间戳来索引。

?时间戳的类型是64位整型。

?时间戳可以由hbase(在数据写入时自动)赋值,精确到毫秒

?时间戳也可以由客户显式赋值。

?hbase提供了两种数据版本回收方式。

?一是保存数据的最后n个版本;

?二是保存最近一段时间内的版本。

?用户可以针对每个列族进行设置。

Cell

?由{row key, column(= +

?cell中的数据是没有类型的,全部是字节码形式存贮

?每个cell都保存着同一份数据的多个版本

?每个cell中不同版本的数据按照时间倒序排序,即最新的数据排在最前面

13

数据模型

Hadoop生态系统(Part10-HBase)V2.0

14

目录

1Hbase概述

2Hbase逻辑模型

3Hbase系统架构及实现

4Hbase编程

5Hbase数据导入

6Hbase调优

?Hbase在物理存储中的一条记录如下::;记录按照row key排序。

?每插入一条会生成本条记录的时间戳(update)物理存储

?T able中的所有行都按照row key的字典序排列

?T able在行的方向上分割为多个HRegion

?HRegion是Hbase中分布式存储和负载均衡的最小单元。

Hadoop生态系统(Part10-HBase)V2.0

Hadoop生态系统(Part10-HBase)V2.0

?Hregion虽然是分布式存储的最小单元,但并不是存储的最小单元。?在下层还有Store,而Store以Hfile的格式保存在HDFS上.

Hadoop生态系统(Part10-HBase)V2.0

?Hlog(WAL Log) WAL

?Write ahead Log,类似mysql中的binlog,

?用来做灾难恢复只用Hlog记录数据的所有变更

?每个Region Server维护一个Hlog,而不是每个Region一个。

可以减少磁盘寻址次数,因此可以提高对table的写性能。

?带来的麻烦是,如果一台region server下线,为了恢复其上的region,将region server上的log进行拆分,然后分发到其它region server上进行恢复。HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象HLogKey中记录了写入数据的归属信息.

18

系统结构

Client

?访问hbase的接口,维护着region位置的缓存信息

Zookeeper

?保证任何时候,集群中只有一个master存储所有Region的寻址入口

?实时监控region server的状态,将上下线信息通知master

?存储hbase的schema,包括有哪些table,每个table有哪些column family Master

?为Region server分配region

?负载region server的负载均衡

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

?GFS上的垃圾文件回收

?处理schema更新请求

Region Server

?维护master分配给它的region

?处理IO请求

?负责切分过大的region

19

HBASE基础表

HBase中有两张特殊的T able,-ROOT-和.META.

?META.:记录了用户表的Region信息,.META.可以有多个region

?ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region Zookeeper中记录了-ROOT-表的location

Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.

表,最后才能找到用户数据的位置去访问

Hadoop生态系统(Part10-HBase)V2.0