HBase学习笔记

1.Hbase是一个用java语言实现的,构建于Hadoop分布式系统(HDFS)上的分布式数据库。java

2.HBase的特色:数据库

  a:海量存储架构

  b:列式存储(能够针对列进行权限控制和读取)分布式

  c:多版本:根据时间戳存储不一样版本的数据oop

  d:稀疏性:blog

        1. 为空的列不占用实际存储空间权限控制

         2.传统数据库为空的列依然要占用存储空间io

  e:高扩展,高可用性:底层基于HDFS,高可用和扩展性获得了保障。系统架构

3.HBase中表结构模型table

  a:表(table):用于存储管理数据,具备稀疏性,面向列的特色。

  b:行键(RowKey):相似于MYSQL中的主键,HBase根据行键来快速检索数据,一个行键对应一条记录。与MYSQL主键不一样的是,HBase的行键是自然固有的,每一行数据都存在行键。

  c:列簇(ColumnFamily):是列的集合。列族在表定义是须要指定,而列在插入数据是动态指定。列中的数据都是以二进制的形式存在,没有数据类型。

 d:时间戳(TimeStamp):是列的一个属性,是一个64位整数。由行键和列肯定的单元格,能够存储多个数据,每一个数据含有时间戳属性,数据具备版本特性。能够根据版本或时间戳来指定查询历史版本数据,若是都不指定,则默认返回最新版本的数据。

4.HBase系统架构

能够看出HBase须要依赖Zookeepeer和HDFS。

  a:Zookeeper

      1:保证任什么时候候,集群中只有一个running master,避免单点问题;

       2:存储全部Region的寻址入口,包括表地址,HMaster地址;

      3:实时监控Region Server的状态,将Region Server的上线和下线信息,实时通知通知给Master;

     4:存储Hbase的schema,包括有哪些table,每一个table有哪些column family

  b:Master:能够启动多个HMaster,经过Zookeeper的Master Election机制保证总有一个Master运行。

  c:RegionServer:HBase中最核心的模块,主要负责响应用户的I/O请求,向HDFS文件系统中读写数据。

  d:HDFS:负责存储数据。