HBASE介绍
来源:互联网 发布:淘宝合作协议书 编辑:程序博客网 时间:2024/05/17 07:05
HBASE的简单介绍
1. HBASE的起源(历史)
1.1 HBASE的起源:
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
1.2 HBASE的发展历程:
2007.4 第一个版本(HVASE-287 MikeCafarella)
2010.10 0.89(Facebook的生产版本 basedon)
2011.4 0.90.2(阿里HBASE的第一个版本 basedon)
2012.1 0.92(Adds 安全,协处理器,HFileV2,分布式log-Splitting)
2012.5 0.94(Performance Release),目前是主流版本。
2013.4 0.95(0.96的预发版,Addsprotobuf,Table Snapshot,PrefixTreeCompression等)
2.HBASE的工作原理
HBase是一个构建在HDFS上的分布式列存储系统;
HBase是基于GoogleBigTable模型开发的,典型的key/value系统;
HBase是ApacheHadoop生态系统中的重要一员,主要用于海量结构化数据存储;
从逻辑上讲,HBase将数据按照表、行和列进行存储。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
HBASE中的基本概念:
RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell):Byte array
Hbase物理模型
每个columnfamily存储在HDFS上的一个单独文件中,空值不会被保存。
Key 和 Versionnumber在每个 column family中均有一份;
HBase 为每个值维护了多级索引,即:<key,column family, column name, timestamp>
物理存储:
1、Table中所有行都按照rowkey的字典序排列;
2、Table在行的方向上分割为多个Region;
3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;
4、Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。
Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。
2. HBASE的优缺点
Hbase的优点:
1.列的可以动态增加,并且列为空就不存储数据,节省存储空间.
2. Hbase自动切分数据,使得数据存储自动具有水平scalability.
3. Hbase可以提供高并发读写操作的支持
Hbase的缺点:
1.不能支持条件查询,只支持按照Row key来查询.
2.暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.
4.HBASE的操作应用
1.启动HBASE操作环境。
命令:hbaseshell这样就可以进行HBASE的相关操作了
2.查看已经分组的外壳环境的命令列表。
命令:help
3.获取某个特定命令的帮助信息和用法示例。
命令:helpcommand命令名称
例:helpcommand create就可以获得create命令的帮助信息和用法示例
4.表的创建。
创建一个名为test的表,使其只包含一个名为data的列
命令格式:create '表名' ,'列族'
create 'test','data'
5.查看用户空间中的所有表。
命令:list
6.往表中插入数据
命令格式:put '表名' '行值' '列值' '数值'
例:插入在列族data上不同行和列的三项数据。
put'test','row1','data:1','value1'
put'test','row2','data:2','value2'
put'test','row3','data:3','value3'
7.查看表的内容
命令格式:scan '表名'
例:scan 'test'
8.删除表
1.先把表调为禁用
命令格式:disable'表名'
例:disable'test'
2.删除表
命令格式:drop '表名'
例:drop 'test'
9.退出HBASE
命令:exit
5.HBASE的应用场景
1. 大数据量(100s TB级数据)且有快速随机访问的需求。
例如淘宝的交易历史记录。数据量巨大无容置疑,面向普通用户的请求必然要即时响应。
2. 容量的优雅扩展
大数据的驱使,动态扩展系统容量的必须的。例如:webPage DB。
3. 业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)
4 优化方面:合理设计rowkey。因为hbase的查询用rowkey是最高效的,也几乎的唯一生产环境可行的方式。所以把你的查询请求转换为查询rowkey的请求吧。
声明:本文内容来自网络整理。
- HBase(2.1)-HBase介绍
- HBase介绍
- hbase 介绍
- hbase 介绍
- HBase介绍
- hbase介绍
- Hbase介绍
- hbase介绍
- hbase 介绍
- HBASE介绍
- hbase介绍
- hbase介绍
- HBase介绍
- hbase 介绍
- hbase介绍
- HBASE介绍
- hbase介绍
- Hbase介绍
- map容器的用法
- C++调用系统时间
- struct 结构体中对数组和指针的操作细节
- 关于android播放gif图片小总结
- -----------强大的adb--------------
- HBASE介绍
- Cordova(phoneGap3.5)入门,for IOS
- iOS RunLoop 初识
- 开发Web Service之二:WSDL逆向生成服务端 .
- mybatis 调用存储过程 包含输入输出参数多结果集
- SPFA 单源最短路径
- Linux菜鸟必学的60个命令(转)
- java 类与结构体转化
- 华为-查找完全数个数