美文网首页
HBase 学习笔记

HBase 学习笔记

作者: 华阳_3bcf | 来源:发表于2018-10-16 16:28 被阅读0次

    开篇

    传统数据库结构是这样的:

    RDBMS-Table.png

    但在NoSQL领域,数据表的模样是这样的:

    NoSQLTable.png

    HBase,就属于该派系的一个典型代表。这些”杂乱无章”的列所构成的多行数据,被称之为一个”稀疏矩阵”,而上图中的每一个”黑块块”,在HBase中称之为一个KeyValue。

    Apache HBase是基于Hadoop构建的一个分布式的、可伸缩海量数据存储系统

    (数据量<10GB,适合Mongodb;数据量>10TB,适合HBase)

    数据模型

    RowKey

    用来表示唯一一行记录的主键,HBase的数据是按照RowKey的字典顺序进行全局排序的,所有的查询都只能依赖于这一个排序维度。

    稀疏矩阵

    HBase中一个表的数据是按照稀疏矩阵的方式组织的:

    RowKey Columns
    Row1 {id, name, phone}
    Row2 {id, name, address, title, email}
    Row3 {id, address, email}

    看的出来:每一行中,列的组成都是灵活的,行与行之间并不需要遵循相同的列定义

    Region

    HBase中采用了”Range分区”,将Key的完整区间切割成一个个的”Key Range” ,每一个”Key Range”称之为一个Region。

    也可以这么理解:将HBase中拥有数亿行的一个大表,横向切割成一个个”子表“,这一个个”子表“就是Region

    Regions.png

    Region是HBase中负载均衡的基本单元,当一个Region增长到一定大小以后,会自动分裂成两个。

    Column Family

    如果将Region看成是一个表的横向切割,那么,一个Region中的数据列的纵向切割,称之为一个Column Family。每一个列,都必须归属于一个Column Family,这个归属关系是在写数据时指定的,而不是建表时预先定义。

    RegionAndColumnFamilies.png

    KeyValue

    每一行中的每一列数据,都被包装成独立的拥有特定结构的KeyValue,KeyValue中包含了丰富的自我描述信息:

    Key ColumnFamily Qualifier Timestamp Type Value Tags

    HBase shell 练习

    在hadoop环境
    启动命令

    $ hbase shell
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 1.1.2.2.6.4.0-91, r2a88e694af7238290a5747f963a4fa0079c55bf9, Thu Jan  4 10:42:39 UTC 2018
    hbase(main):001:0>
    

    创建表

    create {table_name}, {column_family_name}

    hbase(main):002:0> create 'test', 'cf'
    0 row(s) in 1.5670 seconds
    
    => Hbase::Table - test
    hbase(main):003:0>
    

    列出表信息

    hbase(main):003:0> list 'test'
    TABLE
    test
    1 row(s) in 0.0190 seconds
    
    => ["test"]
    

    向表中插入数据

    hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
    0 row(s) in 0.1150 seconds
    
    hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
    0 row(s) in 0.0100 seconds
    hbase(main):007:0> put 'test', 'row3', 'cf:c', 'value3,roy3'
    0 row(s) in 0.0080 seconds
    
    

    扫描表中所有数据

    hbase(main):008:0> scan 'test'
    ROW                   COLUMN+CELL
     row1                 column=cf:a, timestamp=1539671480227, value=value1
     row2                 column=cf:b, timestamp=1539671504820, value=value2
     row3                 column=cf:c, timestamp=1539671656111, value=value3,roy3
    3 row(s) in 0.0240 seconds
    

    获取一行数据

    hbase(main):009:0> get 'test', 'row1'
    COLUMN                CELL
     cf:a                 timestamp=1539671480227, value=value1
    1 row(s) in 0.0180 seconds
    
    

    禁用/启用表格

    hbase(main):028:0> disable 'test'
    0 row(s) in 2.2640 seconds
    
    hbase(main):029:0> enable 'test'
    0 row(s) in 1.2330 seconds
    

    退出

    hbase(main):030:0> quit
    

    相关文章

      网友评论

          本文标题:HBase 学习笔记

          本文链接:https://www.haomeiwen.com/subject/swvhzftx.html