Hbase基础

注:图片代码均来自尚硅谷视频教学
1.Hbase NOSQL
分布式,可扩展,支持海量数据的存储
2.Hbase表结构
在这里插入图片描述
RowKey:行键,唯一,不可重复,有序,字典序
Region:一张表的切片,按RowKey划分,将表分为几个部分
Store:真正存储的内容,下图为物理存储结构
在这里插入图片描述

列族:把几个列划分为一组形成列族。
Namespace:命名空间相当于数据库的概念
Cloum:由列族和列限定符进行限定
info:name info : age
Cell:数据没有类型,全部是字节码存储,{rowkey, column Family:column Qualifier, time Stamp}唯一确定一个Hbase.
3.架构
在这里插入图片描述
4.安装启动
1)HBase-env.sh修改内容:

export JAVA_HOME=/opt/module/jdk1.6.0_144
export HBASE_MANAGES_ZK=false

2)HBase-site.xml修改内容:

<configuration>
	<property>     
		<name>hbase.rootdir</name>     
		<value>hdfs://hadoop102:9000/HBase</value>   
	</property>

	<property>   
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>

   <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
	<property>
		<name>hbase.master.port</name>
		<value>16000</value>
	</property>

	<property>    
		<name>hbase.zookeeper.quorum</name>
	     <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
	</property>

	<property>   
		<name>hbase.zookeeper.property.dataDir</name>
	     <value>/opt/module/zookeeper-3.4.10/zkData</value>
	</property>
</configuration>

3)regionservers:

hadoop102
hadoop103
hadoop104

4)软连接hadoop配置文件到HBase:

[atguigu@hadoop102 module]$ ln -s /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml 
/opt/module/HBase/conf/core-site.xml
[atguigu@hadoop102 module]$ ln -s /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml 
/opt/module/HBase/conf/hdfs-site.xml

5)启动

bin/hbase-daemon.sh start master

4.hbase命令行操作
a.列出所有的表

list
list *  // 可以根据通配符进行匹配

b.创建表

create 表名  列族名1 列族名2

c.查看表的详细信息

describe 'person' // 描述表
desc "person" // 描述表

d.停用表和启动表
停用表后,可以防止在对表做一些维护时,客户端依然可以持续写入数据到表。一般在删除表前,必须停用表。
在对表中的列族进行修改时,也需要停用表。

disable 'person' 
disable_all ‘正则表达式’ 可以使用正则来匹配表名。
is_disabled 可以用来判断表是否被停用。
enable ‘表名’用来启用表。
is_enabled ‘表名’用来判断一个表是否被启用。
enable_all ‘正则表达式’可以通过正则来过滤表,启用复合条件的表。

e.创建命名空间

create_namespace 'liyong'
list_namespace 
drop_namespace 'liyong'
注意:删除之间先要disable

f.count

count 'person' // 数据行数

g.获取region数

 get_splits 'person'

h.alter

alter命令可以修改表的属性,通常是修改某个列族的属性。
alter ‘表名’, ‘delete’ => ‘列族名’

i.put
put可以新增记录还可以为记录设置属性。
put ‘表名’, ‘行键’, ‘列名’, ‘值’
put ‘表名’, ‘行键’, ‘列名’, ‘值’,时间戳
put ‘表名’, ‘行键’, ‘列名’, ‘值’, { ‘属性名’ => ‘属性值’}
put ‘表名’, ‘行键’, ‘列名’, ‘值’,时间戳, { ‘属性名’ =>‘属性值’}

HBase(main):012:0> put 'student','1001','info:name','Nick'
HBase(main):003: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'

j.get

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

k.scan
scan命令可以按照rowkey的字典顺序来遍历指定的表的数据。
scan ‘表名’:默认当前表的所有列族。
scan ‘表名’,{COLUMNS=> [‘列族:列名’],…} : 遍历表的指定列
scan ‘表名’, { STARTROW => ‘起始行键’, ENDROW => ‘结束行键’ }:指定rowkey范围。如果不指定,则会从表的开头一直显示到表的结尾。区间为左闭右开。
scan ‘表名’, { LIMIT => 行数量}: 指定返回的行的数量
scan ‘表名’, {VERSIONS => 版本数}:返回cell的多个版本
scan ‘表名’, { TIMERANGE => [最小时间戳, 最大时间戳]}:指定时间戳范围
注意:此区间是一个左闭右开的区间,因此返回的结果包含最小时间戳的记录,但是不包含最大时间戳记录
scan ‘表名’, { RAW => true, VERSIONS => 版本数}
显示原始单元格记录,在Hbase中,被删掉的记录在HBase被删除掉的记录并不会立即从磁盘上清除,而是先被打上墓碑标记,然后等待下次major compaction的时候再被删除掉。注意RAW参数必须和VERSIONS一起使用,但是不能和COLUMNS参数一起使用。
scan ‘表名’, { FILTER => “过滤器”} and|or { FILTER => “过滤器”}: 使用过滤器扫描

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

l.删除数据

删除某rowkey的全部数据:
HBase(main):016:0> deleteall 'student','1001'
删除某rowkey的某一列数据:
HBase(main):017:0> delete 'student','1002','info:sex'

命令操作详细链接:http://c.biancheng.net/view/6537.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值