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

hadoop学习笔记----- Hbase理论

时间:2014-09-04 02:58:08      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:google   关系数据库   hbase   

HBase

 

Hbase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。

就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBaseHadoop之上提供了类似于Bittable的能力。

HBaseApacheHadoop项目的子项目。

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另一个不同的是HBase基于列的而不是基于行的模式。

 

 

BIG Table表的想法:

以存放关系的学生表为例:

bigtable的想法为,三个列的大表:学号(key)、属性(姓名、年龄、、、)、值(value

 

世界上所有的二维表,都可以用三个列的大表来表示:

行键(key)对象的标识值、

属性、

Value

 

Bigtable表查询:  key-value的查询很快

 

HBase逻辑模型:

以表的形式存放数据;

表由行与列组成,每个列属于某个列族,由行和列确定的存储单元称为元素;

每个元素保存了同一份数据的多个版本,由时间戳来标识区分;

HABASE有多表

列族需要预先定义,列族里面的列不需要预先定义列族里面的列由限定符限制;

 

行键可以重复;

 

HBASE解决HDFS文件系统不能修改问题:

打删除标记

在内存中建立机制,数据存储内存,数据在内存中修改(追加、)内存中数据重整机制、

内存中收集一定时间的数据后,向硬盘中一写就一个文件一个块

每隔一断时间进行一数据重整合并,合并小的文件,解决删除问题

 

面向时间查询:适合社交网站等应用场景

 

 

行键:

 

行键是数据行在表里的唯一标识,并作为检索记录的主键;

访问表里的行只有三种方式:

         通过单个行键访问

         给定行键的范围访问

         全表扫描

行键可以是最大长度不超过64kb的任意字符串,并按照字典序存储;

对于经常要一起读取的行,要对行键值精心设计,以便它们能放在一起存储;

 

列族与列:

 

列表示为<列族>:<限定符>

列族是预先定义好的,列族中的列是随意添加的。

Hbase在磁盘上按照列族存储数据,这种列式数据库的设计非常适合于数据分析的情形;

列族里的元素最好具有相同的读写方式(例如等长的字符串),以提高性能;

面向列存储意义:在行键相同的情况下,列族相同的会放在一起,

 

时间戳:

 

对应每次数据操作的时间,可由系统自动生成,也可以由用户显示的赋值;

HBase支持两种数据版本回收方式:

1、每个数据单元,只存储指定个数的最新版本

2、保存指定时间长度的版本

常见的客户端时间查询“某个时刻起的最新数据”或“给我全部版本的数据”

元素由行键,列族限定符,时间戳唯一决定;

元素以字节码形式存放,没有类型之分;

 


Hbase物理模型:

 bubuko.com,布布扣

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


本文出自 “Linux_蚂蚁” 博客,请务必保留此出处http://onlyoulinux.blog.51cto.com/7941460/1548558

hadoop学习笔记----- Hbase理论

标签:google   关系数据库   hbase   

原文地址:http://onlyoulinux.blog.51cto.com/7941460/1548558

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