BigData

HBase简介与表结构

2019-10-17  本文已影响0人  跟着大数据和AI去旅行

HBase是什么

HBase,即Hadoop DataBase,是Hadoop的一个子项目,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,是Google Bigtable的开源实现。

HBase在Hadoop生态中的位置如下 :

列式存储与行式存储

上面说到HBase是基于列的列式数据库,而常用的关系数据库则是行式数据库,此处对两个概念做简单区分。

行式存储是指数据以行为单位进行存储,同一行的数据在存储介质中连续,如Oracle、Mysql、Sql Server

列式存储是指数据以列为单位进行存储,同一列的数据在存储介质中连续,如HBase、HP vertica等分布式数据库

image

行式存储适合处理OLTP,对实时性要求较高的应用,如ATM系统:

列式存储适合处理OLAP,实时性要求不高,但数据量大

HBase适用场景

首先在搞HBase之前我们要对其建立感性认识,其适用场景如下:

一般我们从数仓中离线统计分析海量数据,将得到的结果插入HBase中用于实时查询。

HBase表结构

HBase中一个可能的表格如下,包括:

image

HBase的表数据内部用Map实现,如上图用字典/json形式可表示如下:

{"Tom":{
    "BasicInfo":{
        "Gender":{"T1":"Male"}, 
        "Age":{"T1":"20"}
    },
    "AddressInfo":{
        "Province":{"T1":"ShanDong"},
        "City":{"T1":"JiNan"}
    }
 },
 "Amy":{
     "BasicInfo":{
         "Gender":{"T2":"Female"}, 
         "Age":{"T2":"18"}
     },
     "AddressInfo":{
         "Province":{"T2":"ShanDong"},
         "City":{"T2":"ZiBo"}
     }
 }
}

假设将Tom的Age改为21,在HBase中会保留数据的若干版本,由时间戳区分,可把表格看成如下形式:

image

用字典/JSON形式表示如下,可以看到实际上只在第四行发生了改变,即在Age中增加了一个键值对 :

{"Tom":{
    "BasicInfo":{
        "Gender":{"T1":"Male"}, 
        "Age":{"T1":"20", "T3":"21"}
    },
    "AddressInfo":{
        "Province":{"T1":"ShanDong"},
        "City":{"T1":"JiNan"}
    }
 },
 "Amy":{
     "BasicInfo":{
         "Gender":{"T2":"Female"}, 
         "Age":{"T2":"18"}
     },
     "AddressInfo":{
         "Province":{"T2":"ShanDong"},
         "City":{"T2":"ZiBo"}
     }
 }
}

所以实际上,上述表在HBase中的逻辑表示如下,一个单元格包含数据的若干个版本,是【时间戳:值】的列表 :

image

综上,在HBase中,一个表就是一个高维、稀疏、有序的Map表。

HBase表特点


参考链接

Spark实战—— (2.1) HBase表格结构、物理存储结构与系统架构

上一篇 下一篇

猜你喜欢

热点阅读