文章目录
一、进入HBase命令行
在你安装的随意台服务器节点上,执行命令:hbase shell,会进入到你的 hbase shell 客户端
[root@zj1 conf]# hbase shell
2019-12-19 12:55:49,053 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2019-12-19 12:55:52,523 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/soft/hbase120/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/soft/hadoop260/share/hadoop/common/lib/slf4j-log4j12-1.7.5.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]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.0-cdh5.14.2, rUnknown, Tue Mar 27 13:31:54 PDT 2018
说明,先看一下提示。其实是不是有一句很重要的话:
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
help 获取帮助
help:获取所有命令提示
help “dml” :获取一组命令的提示
help “put” :获取一个单独命令的提示帮助
exit 退出 hbase shell 客户端
二、HBase表的操作
关于表的操作包括(创建create,查看表列表list。查看表的详细信息desc,删除表drop,清空表truncate,修改表的定义alter)
三、创建create
hbase(main):004:0> help 'create'
Creates a table. Pass a table name, and a set of column family
specifications (at least one), and, optionally, table configuration.
Column specification can be a simple string (name), or a dictionary
(dictionaries are described below in main help output), necessarily
including NAME attribute.
Examples:
Create a table with namespace=ns1 and table qualifier=t1
hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
Create a table with namespace=default and table qualifier=t1
hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
hbase> # The above in shorthand would be the following:
hbase> create 't1', 'f1', 'f2', 'f3'
hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly'}
Table configuration options can be put at the end.
Examples:
hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
hbase> # Optionally pre-split the table into NUMREGIONS, using
hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}
You can also keep around a reference to the created table:
hbase> t1 = create 't1', 'f1'
Which gives you a reference to the table named 't1', on which you can then
call methods.
可以看到其中一条提示
hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
其中t1是表名,f1,f2,f3是列簇的名,如:
hbase(main):005:0> create 'myHbase',{NAME => 'myCard',VERSIONS => 5 }
0 row(s) in 1.7150 seconds
=> Hbase::Table - myHbase
创建了一个名为myHbase的表,表里面有1个列簇,名为myCard,保留5个版本信息
四、查看表列表list
可以输入以下命令进行查看帮助命令
hbase(main):006:0> help 'list'
List all tables in hbase. Optional regular expression parameter could
be used to filter the output. Examples:
hbase> list
hbase> list 'abc.*'
hbase> list 'ns:abc.*'
hbase> list 'ns:.*'
hbase(main):007:0>
直接输入list进行查看
hbase(main):007:0> list
TABLE
customer
myHbase
mydemo:users
3 row(s) in 0.0270 seconds
=> ["customer", "myHbase", "mydemo:users"]
刚刚创建的表myHbase就在其中
五、查看表的详细信息desc
一个大括号,就相当于一个列簇。
hbase(main):008:0> desc 'myHbase'
Table myHbase is ENABLED
myHbase
COLUMN FAMILIES DESCRIPTION
{NAME => 'myCard', BLOOMFILTER => 'ROW', VERSIONS => '5', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE =>
'65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.1210 seconds
六、修改表的定义alter
1、添加一个列簇
hbase(main):010:0> alter 'myHbase', NAME=>'myinfo'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.1320 seconds
hbase(main):011:0> desc 'myHbase'
Table myHbase is ENABLED
myHbase
COLUMN FAMILIES DESCRIPTION
{NAME => 'myCard', BLOOMFILTER => 'ROW', VERSIONS => '5', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE =>
'65536', REPLICATION_SCOPE => '0'}
{NAME => 'myinfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE =>
'65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0630 seconds
2、删除一个列簇
hbase(main):009:0> alter 'myHbase', NAME => 'myCard', METHOD => 'delete'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.1920 seconds
hbase(main):010:0> desc 'myHbase'
Table myHbase is ENABLED
myHbase
COLUMN FAMILIES DESCRIPTION
{NAME => 'myInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', D
ATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true'
, BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0290 seconds
hbase(main):011:0>
删除一个列簇也可以执行以下命令
alter 'myHbase', 'delete' => 'myCard'
3、添加列簇hehe同时删除列簇myInfo
hbase(main):011:0> alter 'myHbase', {NAME => 'hehe'}, {NAME => 'myInfo', METHOD => 'delete'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 3.8260 seconds
hbase(main):012:0> desc 'myHbase'
Table myHbase is ENABLED
myHbase
COLUMN FAMILIES DESCRIPTION
{NAME => 'hehe', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DAT
A_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true',
BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0410 seconds
4、清空表truncate
hbase(main):013:0> truncate 'myHbase'
Truncating 'myHbase' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 3.6760 seconds
5、删除表drop
hbase(main):014:0> drop 'myHbase'
ERROR: Table myHbase is enabled. Disable it first.
Here is some help for this command:
Drop the named table. Table must first be disabled:
hbase> drop 't1'
hbase> drop 'ns1:t1'
直接删除表会报错,根据提示需要先停用表
hbase(main):015:0> disable 'myHbase'
0 row(s) in 2.2620 seconds
hbase(main):016:0> drop 'myHbase'
0 row(s) in 1.2970 seconds
hbase(main):017:0> list
TABLE
0 row(s) in 0.0110 seconds
=> []
hbase(main):018:0>
七、HBase表中数据的操作
关于数据的操作(增put,删delete,查get + scan, 改==变相的增加)
创建 user 表,包含 info、data 两个列簇
hbase(main):018:0> create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',VERSIONS=>1 }
0 row(s) in 4.2670 seconds
=> Hbase::Table - user_info
hbase(main):019:0>
八、增put
查看帮助,需要传入表名,rowkey,列簇名、值等
hbase(main):019:0> help 'put'
Put a cell 'value' at specified table/row/column and optionally
timestamp coordinates. To put a cell value into table 'ns1:t1' or 't1'
at row 'r1' under column 'c1' marked with the time 'ts1', do:
hbase> put 'ns1:t1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value', ts1
hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
The same commands also can be run on a table reference. Suppose you had a reference
t to table ‘t1’, the corresponding command would be:
hbase> t.put ‘r1’, ‘c1’, ‘value’, ts1, {ATTRIBUTES=>{‘mykey’=>‘myvalue’}}
hbase(main):020:0>
向 user 表中插入信息,row key 为 user0001,列簇 base_info 中添加 name 列标示符,值为 zhangsan1
hbase(main):020:0> put 'user_info', 'user0001', 'base_info:name', 'zhangsan1'
0 row(s) in 0.2900 seconds
hbase(main):021:0>
此处可以多添加几条数据
put 'user_info', 'zhangsan_20150701_0001', 'base_info:name', 'zhangsan1'
put 'user_info', 'zhangsan_20150701_0002', 'base_info:name', 'zhangsan2'
put 'user_info', 'zhangsan_20150701_0003', 'base_info:name', 'zhangsan3'
put 'user_info', 'zhangsan_20150701_0004', 'base_info:name', 'zhangsan4'
put 'user_info', 'zhangsan_20150701_0005', 'base_info:name', 'zhangsan5'
put 'user_info', 'zhangsan_20150701_0006', 'base_info:name', 'zhangsan6'
put 'user_info', 'zhangsan_20150701_0007', 'base_info:name', 'zhangsan7'
put 'user_info', 'zhangsan_20150701_0008', 'base_info:name', 'zhangsan8'
put 'user_info', 'zhangsan_20150701_0001', 'base_info:age', '21'
put 'user_info', 'zhangsan_20150701_0002', 'base_info:age', '22'
put 'user_info', 'zhangsan_20150701_0003', 'base_info:age', '23'
put 'user_info', 'zhangsan_20150701_0004', 'base_info:age', '24'
put 'user_info', 'zhangsan_20150701_0005', 'base_info:age', '25'
put 'user_info', 'zhangsan_20150701_0006', 'base_info:age', '26'
put 'user_info', 'zhangsan_20150701_0007', 'base_info:age', '27'
put 'user_info', 'zhangsan_20150701_0008', 'base_info:age', '28'
put 'user_info', 'zhangsan_20150701_0001', 'extra_info:Hobbies', 'music'
put 'user_info', 'zhangsan_20150701_0002', 'extra_info:Hobbies', 'sport'
put 'user_info', 'zhangsan_20150701_0003', 'extra_info:Hobbies', 'music'
put 'user_info', 'zhangsan_20150701_0004', 'extra_info:Hobbies', 'sport'
put 'user_info', 'zhangsan_20150701_0005', 'extra_info:Hobbies', 'music'
put 'user_info', 'zhangsan_20150701_0006', 'extra_info:Hobbies', 'sport'
put 'user_info', 'zhangsan_20150701_0007', 'extra_info:Hobbies', 'music'
九、查get + scan
获取 user 表中 row key 为 user0001 的所有信息
hbase(main):068:0> get 'user_info','user0001'
COLUMN CELL
base_info:name timestamp=1576784157404, value=zhangsan1
1 row(s) in 0.0290 seconds
hbase(main):069:0>
获取user表中row key为zhangsan_20150701_0001,info列簇的所有信息
hbase(main):074:0> get 'user_info' ,'zhangsan_20150701_0001','base_info'
COLUMN CELL
base_info:age timestamp=1576784099917, value=21
base_info:name timestamp=1576784078881, value=zhangsan1
2 row(s) in 0.0080 seconds
查询user_info表中的所有信息
hbase(main):026:0> scan 'user_info'
查询user_info表中列簇为base_info的信息
hbase(main):075:0> scan 'user_info',{COLUMNS=>'base_info'}
十、 删delete
删除user_info表row key为rk0001,列标示符为base_info:name的数据
hbase(main):028:0> delete 'user_info', 'rk0001', 'base_info:name'
0 row(s) in 0.0780 seconds
hbase(main):029:0> scan 'user_info', {COLUMNS => 'base_info'}
ROW COLUMN+CELL
user0001 column=base_info:name, timestamp=1522320801670, value=zhangsan1
1 row(s) in 0.0530 seconds
hbase(main):030:0>
来源:CSDN
作者:beautiful_huang
链接:https://blog.csdn.net/beautiful_huang/article/details/103654875