HBase详细介绍及原理解析!

基本介绍HBase官网:https://hbase.Apache.org/ 。
Apache HBase 是 Hadoop中一个支持分布式的、可扩展的大数据存储的数据库 。
当需要对大数据进行随机、实时读/写访问时,可以用 Apache HBase 。
HBase特点列式存储:
HBase是面向列族的非关系型数据库,每行数据列都可以不同 , 并且列可以按照需求进行动态增加 。
【HBase详细介绍及原理解析!】因此在开始创建HBase表时,可以只创建列族,等需要时再创建相应的列 。
数据压缩:
列式存储意味着数据往往类型相同 , 可以采用某种压缩算法进行统一的压缩存储 。
海量存储:
HDFS支持的海量存储,存储PB级数据仍能有百毫秒内的响应速度 。
基本操作Shell操作进入HBase客户端命令操作界面:
hbase shell查看帮助命令:
hbase(mAIn):001:0> help查看当前数据库中有哪些表:
hbase(main):006:0> list创建一张表:
创建user表,包含base_info、extra_info两个列族 。
hbase(main):007:0> create 'user', 'base_info', 'extra_info' create 'user', {NAME => 'base_info', VERSIONS => '3'},{NAME => 'extra_info'}添加数据操作:
向user表中插入信息 , row key为 rk0001,列族base_info中添加name列标示符,值为zhangsan 。
hbase(main):008:0> put 'user', 'rk0001', 'base_info:name', 'zhangsan'向user表中插入信息,row key为rk0001,列族base_info中添加age列标示符,值为20 。
hbase(main):010:0>put 'user', 'rk0001', 'base_info:age', 20查询数据:
通过rowkey进行查询:

  • 获取user表中row key为rk0001的所有信息 。
hbase(main):006:0> get 'user', 'rk0001'查看rowkey下面的某个列族的信息:
  • 获取user表中row key为rk0001,base_info列族的所有信息 。
hbase(main):007:0> get 'user', 'rk0001', 'base_info'查看rowkey指定列族指定字段的值:
  • 获取user表中row key为rk0001,base_info列族的name、age列标示符的信息 。
hbase(main):008:0> get 'user', 'rk0001', 'base_info:name', 'base_info:age'查看rowkey指定多个列族的信息
  • 获取user表中row key为rk0001,base_info、extra_info列族的信息 。
hbase(main):010:0> get 'user', 'rk0001', 'base_info', 'extra_info' hbase(main):011:0> get 'user', 'rk0001', {COLUMN => ['base_info', 'extra_info']} hbase(main):012:0> get 'user', 'rk0001', {COLUMN => ['base_info:name', 'extra_info:address']}指定rowkey与列值查询:
  • 获取user表中row key为rk0001 , cell的值为zhangsan的信息 。
hbase(main):013:0> get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}指定rowkey与列值模糊查询:
  • 获取user表中row key为rk0001,列标示符中含有a的信息 。
hbase(main):015:0> get 'user', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}插入一批数据:
hbase(main):016:0> put 'user', 'rk0002', 'base_info:name', 'fanbingbing'hbase(main):017:0> put 'user', 'rk0002', 'base_info:gender', 'female'hbase(main):018:0> put 'user', 'rk0002', 'base_info:birthday', '2000-06-06'hbase(main):019:0> put 'user', 'rk0002', 'extra_info:address', 'Shanghai'查询所有数据:
  • 查询user表中的所有信息 。
hbase(main):020:0> scan 'user'列族查询:
  • 查询user表中列族为 base_info 的信息 。
Scan: