HBase简介

简介:HBase逻辑结构和物理结构,对比关系型数据库Mysql,并整理HBase常用命令


HBase

  • HBase是一种分布式可扩展支持海量数据存储列存储模式与键值对存储模式结合NoSQL 数据库。

  • HBase是BigTable的开源实现,建立在HDFS上,提供高可靠、高性能、列存储、可伸缩、实施读写NoSql的数据库系统。

  • HBase采用三维结构来实现数据的有序存储,其三维分别指:row key(行键)、column(column Family+column qualifier)、timestamp(时间戳)。

数据模型

逻辑结构

Column family(列族):将表按纵向切分,如:personal_info、office_info

Region:将表按横向切分。Region按大小分割,每个表一开始只有两个Region,随着数据不断插入到表中,Region 不断增大,当增大到一个阈值的时候,Region就会等分为两个新的Region。当表中的行不断增多时,就会有越来越多的Region

横向纵向切分的思想类似于mysql中的水平切分和垂直切分

Row Key:行键,类似于MySql中的主键。Row Key按字典序排序,每个表都有唯一的行键

column qualifier:列限定符,即列名,如:name、city、phone

store:被列族和region划分的每个小块,即实际存储的内容

cell(单元格):通过 rowkey 和 columns 确定的一个存储单元。每个 cell 都保存着同一份数据的多个版本,具体版本通过时间戳来索引。

物理结构–store

row key、TimeStamp、column(column Family+column qualifier)唯一标识一个cell

TimeStamp:用于标识数据的不同版本(version)

对比HBase和MySql

关系数据库 MysqlHBase
数据库 DataBase命名空间 NameSpace,HBase自带的命名空间有hbase(HBase内置的表)、default(用户默认使用的命名空间)
表 table,定义表时需要声明具体列region,HBase定义表时只需要声明列族(column Family)即可,不需要声明具体的列。往 HBase写入数据时,字段可以动态、按需指定
元组行 Row。每行数据由一个Rowkey和一个Column组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索
属性列 Column。HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符,列名)进行限定
时间戳 Time Stamp。用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入 HBase 的时间。注意,如需跨平台运行hbase,则需要调整系统的时间使之一致
填入数据时需要制定数据类型单元格 Cell。由{rowkey, column Family: column Qualifier, time Stamp} 唯一确定的单元。cell 中的数据是没有类型的,全部是字节码形式存贮

HBase基本架构

待整理自:深入理解 Hbase 架构(翻译) - SegmentFault 思否

HBase命令

基础命令

# 进入hbase安装目录
$cd /usr/local/java/hbase/hbase-1.1.5/bin

# 启动hbase服务
$./start-hbase.sh

# 查看hbase的启动情况
$JPS 

# 进入hbase命令行界面
$./hbase shell

# 退出hbase命令行
$exit

# 退出hbase服务
$stop-hbase.sh

表操作命令

ddldmlnamespage
createputcreate_namespace
dropdelete、deletealldrop_namespace
alterputalter_namespace
list、describescan、getdescribe_namespace、list_namespace
# 创建表student,并设置属性name、age,HBse可自动指定主键,不用人工设定
create 'student','name','age'

# 添加数据,为student表添加学号为18001(主键)、学生名为Mike的一行数据
put 'student','18001','name:','Mike','age:','18'

# 删除数据
delete 'student','18001','name'  # 删除18001这行的name数据
deleteall 'student','18001'  # 删除18001这行数据

# 查看数据
get 'student','18001'  # 查看某个表的全部数据
scan 'student'  # 查看所有表数据

注意:如果在输入命令的末尾增加了分号;,则两次输入单引号'即可



参考:尚硅谷HBase教程(hbase框架快速入门)_哔哩哔哩_bilibili

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值