Hbase介绍

一、什么是Hbase?

        HBase 是一种列式的分布式数据库,是一种类似于数据库的存储层,适用于结构化和非结构化的存储,其底层依旧依赖 HDFS 来作为其物理存储。

二、什么是列式存储?列式存储有哪些优势?

        每一列单独存放,数据即是索引。适合关注的不是整张表,而是某些字段。每一列单独存放,数据即是索引。只访问涉及得列,如果我们想访问单独一列(比如NAME)会相当迅速。

三、rowkey

        rowkey是行的主键,Hbase支持3种检索方式:

     (1) 通过单个Rowkey访问,即按照某个Rowkey键值进行get操作,这样获取唯一一条记录;

    (2) 通过Rowkey的range进行scan,即通过设置startRowKey和endRowKey,在这个范围内进行扫描。这样可以按指定的条件获取一批记录;

    (3) 全表扫描,即直接扫描整张表中所有行记录。

        rowkey的设计原则:

长度原则:实际应用中越短越好,不要超过16个字节,以 byte[] 形式保存,一般设计成定长。        

散列原则:如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率。

唯一性原则:保证每个rowkey是惟一的

四、列族(column family):

        hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history , courses:math 都属于 courses 这个列族。访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能 帮助我们管理不同类型的应用。

五、Region

Region是HBase数据管理的基本单位。数据的move,数据的balance,数据的split,都是按照region来进行操作的。

六、Hbase Shell

创建表:create '表名称', '列族名'

hbase(main):009:0>  create 't1','f1'

添加记录:put '表名称', '行名称', '列名称:', '值'

hbase(main):010:0> put 't1','row1001','f1:name','dongjie'

查看记录:get '表名称', '行名称'

查看表中的记录总数:count  '表名称'
删除记录:delete  '表名' ,'行名称' , '列名称'
删除一张表:先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录:scan "表名称"  
查看某个表某个列中所有数据:scan "表名称" , ['列名称:']

更新记录:就是重写一遍进行覆盖

七、Hive与Hbase整合(只讲原理)

为什么Hive要与Hbase整合呢?因为Hbase不支持标准SQL查询,但是Hive支持。Hive查询速度慢,每次都要转化成MapReduce,性能较差。整合后Hive中创建的表能直接存储到Hbase,更新,插入等操作直接在Hbase中体现。

在Hive与Hbase整合的过程中,核心的步骤就是通过Hive绑定Hbase中的table表,绑定完之后,我们就可以通过Hive这个客户端工具对Hbase中的表进行查询了,那么如何进行绑定呢?—-关键在于Hbase中的table如何和hive中建立的table在column级别上建立映射关系。

create external table hivetable(rowkey string, column1 string, column2 string,column3 string)   
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,columnfamily1:column1, columnfamily1:column2,columnfamily2:column3") 
tblproperties("hbase.table.name"="hbasetable"); 

上面这个建表语句表示在Hive中建立一个外部表—名字叫做hivetable,与其在Hbase中建立映射关系的表名字为hbasetable,映射关系如下:

hivetable —————————————hbasetable 
rowkey<—————>key (Hive中的rowkey字段关联到Hbase中的行健key)
column1<————–>columnfamily1:column1 (hivetable中的column1映射到hbasetable中columnfamily1上的column1字段) 
column2<————–>columnfamily1:column2 (hivetable中的column2映射到hbasetable中columnfamily1上的column2字段) 
column3<————–>columnfamily2:column3 (hivetable中的column3映射到hbasetable中columnfamily2上的column3字段) 

stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ 的含义是:Hive与Hbase整合功能(互相通信)的实现主要是通过hive_hbase-handler.jar这个工具类来完成的,而语法中的HBaseStorageHandler指的就是这个工具类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值