7、Hbase基本框架

   HBase是一个构建在HDFS上的分布式列存储系统;
   HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;
   从逻辑上讲, HBase将数据按照表、行和列进行存储。


Hbase与HDFS对比:
   两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;
   HDFS适合批处理场景:
   不支持数据随机查找
   不适合增量数据处理
   不支持数据更新

Hbase表的特点:
  大:一个表可以有数十亿行,上百万列;
  无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
  面向列:面向列(族)的存储和权限控制,列(族)独立检索;
  稀疏:对于空( null)的列,并不占用存储空间,表可以设计的非常稀疏;
  数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
  数据类型单一: Hbase中的数据都是字符串,没有类型。

行存储与列存储:


HBase是基于Google BigTable模型开发的,典型的key/value系统;






Hbase支持的操作,所有操作均是基于rowkey的;
   支持CRUD( Create、 Read、 Update和Delete)和Scan;
   单行操作:
   Put
   Get
   Scan
   多行操作:
   Scan
   MultiPut
   没有内置join操作,可使用MapReduce解决。

Hbase物理模型:
每个column family存储在HDFS上的一个单独文件中;
Key 和 Version number在每个 column family中均由一份;
空值不会被保存。
HBase 为每个值维护了多级索引,即:
<rowkey, column family, columnname, timestamp>


Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上;


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



HBase架构:


Client
  包含访问HBase的接口,并维护cache来加快对HBase的访问
Zookeeper 
  保证任何时候,集群中只有一个master
  存贮所有Region的寻址入口
  实时监控Region server的上线和下线信息。并实时通知给Master
  存储HBase的schema和table元数据
Master
  为Region server分配region
  负责Region server的负载均衡
  发现失效的Region server并重新分配其上的region
  管理用户对table的增删改查操作
Region Server
  Region server维护region,处理对这些region的IO请求
  Region server负责切分在运行过程中变得过大的region


HBase容错性:
Master容错: Zookeeper重新选择一个新的Master
  无Master过程中,数据读取仍照常进行;
  无master过程中, region切分、负载均衡等无法进行;
RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳
  Master将该RegionServer上的Region重新分配到其他RegionServer上;
  失效服务器上“预写”日志由主服务器进行分割并派送给新的
RegionServer
  Zookeeper容错: Zookeeper是一个可靠地服务
  一般配置3或5个Zookeeper实例。

Region定位:

.ROOT-
  表包含.META.表所在的region列表,该表只会有一个Region;
  Zookeeper中记录了 -ROOT-表的location。
.META.
  表包含所有的用户空间region列表,以及RegionServer的服务器地址。

猜你喜欢

转载自onway417.iteye.com/blog/2195984