Hadoop基础——HBase基础

                                          Hadoop基础——HBase


HBase 简介:

    是建立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系          统,      实现对大型数据的实时、随机的读写访问。

    HBase 依赖于 HDFS 做底层的数据存储,BigTable 依赖 Google GFS 做数据存储

    HBase 依赖于 MapReduce 做数据计算,BigTable 依赖 Google MapReduce 做数据计算

    HBase 依赖于 ZooKeeper 做服务协调,BigTable 依赖 Google Chubby 做服务协调

HBase 这个 NoSQL 数据库的要点:

     ① 它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据

     ② HBase 查询数据功能很简单,不支持 join 等复杂操作

     ③ 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。

    ④ HBase 中支持的数据类型:byte[]就是所有(底层所有数据的存储都是字节数组)

    ⑤ 主要用来存储结构化和半结构化的松散数据。

 

HBase库中表的特点:

     1、大:一个表可以有上十亿行,上百万列

    2、面向列:面向列(族)的存储和权限控制,列(簇)独立检索。

    3、稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

    4、无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一 张表中不同的行可以有截然        不同的列

 

HBase表结构: 

Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。

由于Hbase只支持3中查询方式:

1、基于Rowkey的单行查询

2、基于Rowkey的范围扫描

3、全表扫描

Column: 列,可理解成MySQL列。

ColumnFamily: 列族, HBase引入的概念。

 

Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取。就像是家族的概念,我们知道一个家族是由于很多个的家庭组成的。列族也类似,列族是由一个一个的列组成(任意多)。

Hbase表的创建的时候就必须指定列族。就像关系型数据库创建的时候必须指定具体的列是一样的。

Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。

TimeStamp: TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。

HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。每个 cell 都保存着同一份 数据的多个版本。

 

 

HBase使用条件:

1、HBase 依赖于 HDFS 做底层的数据存储

2、HBase 依赖于 MapReduce 做数据计算

3、HBase 依赖于 ZooKeeper 做服务协调

4、HBase源码是java编写的,安装需要依赖JDK


——Hbase安装和启动文章推荐:https://www.cnblogs.com/qingyunzong/p/8668880.html 

你可能感兴趣的:(Java天地,Hadoop分布式基础学习)