Hbase简介和基础命令使用

1、概述

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统

客户端启动命令

方式一:

分别启动
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver

方式二:

//启动
bin/start-hbase.sh
//关闭
bin/stop-hbase.sh

2、Hbase架构

1Client

Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息

2Zookeeper

HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:

通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务

通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息

通过Zoopkeeper存储元数据的统一入口地址

3HmasterNameNode)、

master节点的主要职责如下:
为RegionServer分配Region
维护整个集群的负载均衡
维护集群的元数据信息
发现失效的Region,并将失效的Region分配到正常的RegionServer上
当RegionSever失效的时候,协调对应Hlog的拆分
4HregionServer(DataNode)

HregionServer直接对接用户的读写请求,

它的功能概括如下:
管理master为其分配的Region
处理来自客户端的读写请求
负责和底层HDFS的交互,存储数据到HDFS
负责Region变大以后的拆分
负责Storefile的合并工作

5HDFS

HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
提供元数据和表数据的底层分布式存储服务
数据多副本,保证的高可靠和高可用性

3、基本指令

1、进入客户端

bin/hbase shell

2、查看当前命名空间有那些表

list

3、创建表

创建表的时候需要声明列族

create 'student','info'

4、插入数据

hbase(main):004:0> put 'student','1001','info:sex','male'
hbase(main):004:0> put 'student','1001','info:age','18'
hbase(main):005:0> put 'student','1002','info:name','Janna'
hbase(main):006:0> put 'student','1002','info:sex','female'
hbase(main):007:0> put 'student','1002','info:age','20'

5、扫描查看数据

hbase(main):008:0> scan 'student'
hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW  => '1001'}
hbase(main):010:0> scan 'student',{STARTROW => '1001'}

6、查看表结构

hbase(main):011:0> describe 'student'

7、更新指定字段的数据(其实并没有更新数据,只是插入数据记录,Hbase通过时间戳控制版本VERSION)

hbase(main):012:0> put 'student','1001','info:name','Nick'

hbase(main):013:0> put 'student','1001','info:age','100'

8、查看“指定行”或“指定列族:列”的数据

hbase(main):014:0> get 'student','1001'
hbase(main):015:0> get 'student','1001','info:name'

9、统计表数据行数

hbase(main):021:0> count 'student'

10、删除数据

删除某rowkey的全部数据

hbase(main):016:0> deleteall 'student','1001'

删除某rowkey的某一列数据

hbase(main):017:0> delete 'student','1002','info:sex'

11、清空表数据(清空表的操作顺序为先disable,然后再truncate)

hbase(main):018:0> truncate 'student'

12、删除表数据

首先需要先让该表为disable状态:
hbase(main):019:0> disable 'student'
然后才可以drop这个表:
hbase(main):020:0> drop 'student'

13、变更表信息

将info列族中的数据按照时间戳最近的存放3个版本:

hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}

14、其他命令

//创建命名空间
create_namespace '_'
//向指定命名空间创建表
create '命名空间:表名','列族'

4、Hbase数据结构

1、RowKey

RowKey是用来检索记录的主键,访问HBASE table中的行,有三种方式:

1、通过单个RowKey访问(get)

2、通过RowKey的range(正则)(like)

3、全表扫描(scan)

RowKey行键 (RowKey)可以是任意字符串,在HBASE内部,RowKey保存为字节数组

存储时,数据按照RowKey的字典序(byte order)排序存储。设计RowKey时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

2、Column Family

列族:HBASE表中的每个列,都归属于某个列族。

列族是表的schema的一部 分(而列不是),必须在使用表之前定义。

3、Cell

由{rowkey, column Family:columu, version} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。

4、Time Stamp

每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。

时间戳的类型是 64位整型。时间戳可以由HBASE(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

HBASE提供 了两种数据版本回收方式:

一是保存数据的最后n个版本

二是保存最近一段 时间内的版本(比如最近七天)。

5、NameSpace

1) Table:所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定,则在default默认的命名空间中。

2) RegionServer group一个命名空间包含了默认的RegionServer Group。

3) Permission权限,命名空间能够让我们来定义访问控制列表ACL(Access Control List)。例如,创建表,读取表,删除,更新等等操作。

4) Quota限额,可以强制一个命名空间可包含的region的数量。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yongfeicao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值