赞
踩
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。接下来记录一下HBase的一些基本的使用:
./hbase shell
quit
hbase(main):001:0> status
1 active master, 1 backup masters, 2 servers, 0 dead, 1.0000 average load
hbase(main):002:0> version
1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
hbase(main):003:0> table_help
Help for table-reference commands.
You can either create a table via 'create' and then manipulate the table via commands like 'put', 'get', etc.
See the standard help information for how to use each of these commands.
...
hbase(main):004:0> whoami
root (auth:SIMPLE)
groups: root
# test为表名,cf为列族
create 'test','cf'
list
disable 'test'
is_disabled 'test'
enable 'test'
is_enabled 'test'
describe 'test'
# 添加一个列族df
alter 'test','df'
exists 'test'
drop 'test'
# 禁用表明以te开头的所有表
disable_all 'te.*'
# 删除表明以te开头的所有表
drop_all 'te.*'
# 'test'表名,'row1'行,'cf:a'列(由列族加冒号再拼接一个后缀形成),value值
put 'test','row1','cf:a','value'
# 获取row1行的所有数据
get 'test','row1'
# 获取row1行,cf:a列的数据
get 'test','row1','cf:a'
# 删除row1行,cf:a列的数据
delete 'test','row1','cf:a'
deleteall 'test','row1'
scan 'test'
count 'test'
truncate 'test'
我们还可以在创建表的同时给这个表分配一个变量,通过这个表里来间接操作表:
t = create 'test','cf'
t = get_table 'test'
t.put 'row1','cf:a','value'
t.scan
t.describe
t.disable
t.drop
hbase(main):002:0> @shell.hbase.configuration.get('hbase.rpc.timeout')
=> "60000"
更改远程连接超时时间:
hbase(main):001:0> @shell.hbase.configuration.setInt('hbase.rpc.timeout',61010)
hbase(main):002:0> @shell.hbase.configuration.get('hbase.rpc.timeout')
=> "61010"
我们可以将HBase Shell 命令输入到文本文件当中,每一行为一个命令,假设有这样一个文件test
:
create 'user','cf'
put 'user','row1','cf:a','zhangsan'
scan 'user'
此时我们使用命令读取并执行这个文件中存储的命令,首先我们先进入到HBase的存放目录,进入bin目录,执行下面命令:
root@master:/usr/local/hbase/bin# ./hbase shell ~/test
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
0 row(s) in 3.0610 seconds
0 row(s) in 0.3280 seconds
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1512723251727, value=zhangsan
1 row(s) in 0.1680 seconds
可以看出,HBase执行了文件当中的命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。