一,Hbase概述
HBase是建 立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。
HBase 依赖于 HDFS 做底层的数据存储, 依赖于 MapReduce 做数据计算, 依赖于 ZooKeeper 做服务协调。
它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据。HBase 查询数据功能很简单,不支持 join 等复杂操作。 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)主要用来存储结构化和半结构化的松散数据。
HBase 中的表特点
大:一个表可以有上十亿行,上百万列。
面向列:面向列(族)的存储和权限控制,列(簇)独立检索。
稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一 张表中不同的行可以有截然不同的列。
二,Hbase的结构
Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。
Column的概念,列,可理解成MySQL列。
ColumnFamily的概念,列族, HBase引入的概念。Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取
TimeStamp的概念,TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
单元格(Cell),由{rowkey, column( = + ), version} 唯一确定的单元。 Cell 中的数据是没有类型的,全部是字节码形式存贮。
三,Hbase shell操作入门
进入shell客户端:hbase shell
推出shell客户端:exit
HBase表的操作:
创建表:create ‘表名‘,{NAME => ‘列簇名‘,VERSIONS => 版本号}
查看表:list
查看表的详细信息:desc ‘表名‘
修改表的定义alter:
添加一个列簇:alter ‘表名‘,NAME => ‘列簇名‘
删除一个列簇:alter ‘表名‘,NAME => ‘列簇名‘, METHOD => ‘delete‘
或者:alter ‘表名‘,‘delete‘ => ‘myCard‘
添加列簇的同时修改列簇:alter ‘表名‘,{NAME => ‘列簇‘},{NAME => ‘列簇‘,METHOD => ‘delete‘}
清空表:truncate ‘表名‘
删除表:先停用表:disable ‘表名‘ 再删除表:drop ‘表名‘
HBase表中数据的操作:
增put: put ‘表名‘ ,‘rowkey‘,‘列簇名:字段名‘,‘字段值‘
查get + scan:get ‘表名‘,‘rowkey‘,‘列簇名‘
查询表中的所有信息:scan ‘表名‘ scan ‘表名‘,{COLUMNS => ‘列簇名‘}
删delete:delete ‘表名‘,‘rowkey‘,‘列簇名:字段名‘
Hbase学习笔记
原文:https://www.cnblogs.com/songweideboke/p/9874068.html