1001-HBase基本概念
2015-06-08 17:47
246 查看
一、HBase的基本概念
HBase 是一个分布式,可扩展的,大规模面向列的开源数据库。
特点:
①强一致性读写: HBase 不是 "最终一致性(eventually consistent)" 数据存储. 这让它很适合高速计数聚合类任务。
②自动分片(Automatic sharding): HBase 表通过region分布在集群中。数据增长时,region会自动分割并重新分布。
③RegionServer 自动故障转移
④Hadoop/HDFS 集成: HBase 支持本机外HDFS 作为它的分布式文件系统。
⑤MapReduce: HBase 通过MapReduce支持大并发处理, HBase 可以同时做源和目标.
⑥Java 客户端 API: HBase 支持易于使用的 Java API 进行编程访问.
⑦Thrift/REST API: HBase 也支持Thrift 和 REST 作为非Java 前端.
⑧Block Cache 和 Bloom Filters: 对于大容量查询优化, HBase支持 Block Cache 和 Bloom Filters。
二、什么时候用 HBase
①当你需要随机,实时读写你的数据时候可考虑使用HBase。
②确信有足够多数据,如果有上亿或上千亿行数据,HBase是很好的备选。 如果只有上千或上百万行,则用传统的RDBMS可能是更好的选择。
因为所有数据可以在一两个节点保存,集群其他节点可能闲置
三、HBase和HDFS区别
①HDFS:分布式文件系统,适合保存大文件,但不能提供个别记录的查询
②HBase:是分布式,可扩展,大规模面向列存储的数据库,底层采用hdfs存储hbase的数据,采用mapreduce处理hbase数据。HBase是基于HDFS且提供大表的记录快速查找(和更新),内部将数据放到索引的“存储文件”,以提高查询速度,存储位置在hdfs上
③HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式
④HBase利用Hadoop HDFS作为其文件存储系统,为HBase提供了高可靠性的底层存储支持
⑤HBase同样利用Hadoop MapReduce来处理HBase中的海量数据,为HBase提供了高性能的计算能力
⑥HBase利用ZooKeeper提供了稳定服务和failover机制
![](http://img.blog.csdn.net/20150608174520536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hlbmZ1bGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
四、目录表(Catalog Tables)
目录表 -ROOT- 和 .META. 作为 HBase 表存在。他们被HBase shell的
4.1 ROOT
-ROOT- 保存 .META. 表存在哪里的踪迹. -ROOT- 表结构如下:
Key:
.META. region key (
Values:
4.2 META
.META. 保存系统中所有region列表。 .META.表结构如下
Key:
Region key 格式 (,[region start key],[region id])
HBase 是一个分布式,可扩展的,大规模面向列的开源数据库。
特点:
①强一致性读写: HBase 不是 "最终一致性(eventually consistent)" 数据存储. 这让它很适合高速计数聚合类任务。
②自动分片(Automatic sharding): HBase 表通过region分布在集群中。数据增长时,region会自动分割并重新分布。
③RegionServer 自动故障转移
④Hadoop/HDFS 集成: HBase 支持本机外HDFS 作为它的分布式文件系统。
⑤MapReduce: HBase 通过MapReduce支持大并发处理, HBase 可以同时做源和目标.
⑥Java 客户端 API: HBase 支持易于使用的 Java API 进行编程访问.
⑦Thrift/REST API: HBase 也支持Thrift 和 REST 作为非Java 前端.
⑧Block Cache 和 Bloom Filters: 对于大容量查询优化, HBase支持 Block Cache 和 Bloom Filters。
二、什么时候用 HBase
①当你需要随机,实时读写你的数据时候可考虑使用HBase。
②确信有足够多数据,如果有上亿或上千亿行数据,HBase是很好的备选。 如果只有上千或上百万行,则用传统的RDBMS可能是更好的选择。
因为所有数据可以在一两个节点保存,集群其他节点可能闲置
三、HBase和HDFS区别
①HDFS:分布式文件系统,适合保存大文件,但不能提供个别记录的查询
②HBase:是分布式,可扩展,大规模面向列存储的数据库,底层采用hdfs存储hbase的数据,采用mapreduce处理hbase数据。HBase是基于HDFS且提供大表的记录快速查找(和更新),内部将数据放到索引的“存储文件”,以提高查询速度,存储位置在hdfs上
③HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式
④HBase利用Hadoop HDFS作为其文件存储系统,为HBase提供了高可靠性的底层存储支持
⑤HBase同样利用Hadoop MapReduce来处理HBase中的海量数据,为HBase提供了高性能的计算能力
⑥HBase利用ZooKeeper提供了稳定服务和failover机制
四、目录表(Catalog Tables)
目录表 -ROOT- 和 .META. 作为 HBase 表存在。他们被HBase shell的
list 命令过滤掉了,但他们和其他表一样存在。
4.1 ROOT
-ROOT- 保存 .META. 表存在哪里的踪迹. -ROOT- 表结构如下:
Key:
.META. region key (
.META.,,1)
Values:
info:regioninfo(序列化.META.的 HRegionInfo 实例 )
info:server( 保存 .META.的RegionServer的server:port)
info:serverstartcode( 保存 .META.的RegionServer进程的启动时间)
4.2 META
.META. 保存系统中所有region列表。 .META.表结构如下
Key:
Region key 格式 (