一、启动habse分布式集群
在集群的某个节点启动hbase集群的命令:start-hbase.sh
二、进入hbase的客服端命令:
hbase shell
三、hbase基本shell命令:
注意HBase Shell 中的回格键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。
HBase帮助命令:hbase(main):003:0> help ‘create’
命名空间:
列出所有命名空间:
1、hbase> list_namespace
新建命名空间:
1、hbase> create_namespace ‘ns1’
删除命名空间:
1、hbase> drop_namespace ‘ns1’
该命名空间必须为空,否则会报错。
修改命名空间:
1、hbase> alter_namespace ‘ns’, {METHOD => ‘set’, ‘PROPERTY_NAME’ => ‘PROPERTY_VALUE’}
表
列出所有表:
1、hbase> list
列出指定命名空间下的所有表:
1、hbase> list_namespace_tables ‘ns1’
新建表:
1、hbase> create ‘ns:t1’, ‘cf’
新建一个以命名空间ns的表,表名为:t1,列族为:cf。
删除表:
1、hbase> disable ‘ns:t1’ 删除表前,先禁用表
2、hbase> drop ‘ns:t1’ 删除表
修改表名:
HBase没有rename命令,可以通过快照功能修改表名,详见下述。
查看表内容:
1、hbase> scan ‘ns:t1’
2、hbase> scan ‘ns:t1’, {LIMIT=>5} # 查看前5行数据
插入数据:
hbase> put ‘ns:t1’, ‘r1’, ‘cf:c1’, ‘value’
eg:我们插入以下数据:
1、put ‘gld:student’,‘1’,‘cf1:name’,‘孙悟空’
2、put ‘gld:student’,‘1’,‘cf1:sex’,‘男’
3、put ‘gld:student’,‘1’,‘cf1:age’,‘18’
4、put ‘gld:student’,‘2’,‘cf1:name’,‘安琪拉’
5、put ‘gld:student’,‘2’,‘cf1:sex’,‘女’
6、put ‘gld:student’,‘2’,‘cf1:age’,‘19’
7、put ‘gld:student’,‘3’,‘cf1:name’,‘狄仁杰’
8、put ‘gld:student’,‘3’,‘cf1:sex’,‘男’
9、put ‘gld:student’,‘3’,‘cf1:age’,‘20’
hbase> scan ‘gld:student’
ROW COLUMN+CELL
1 column=cf1:age, timestamp=1538030949261, value=18
1 column=cf1:name, timestamp=1538030949174, value=\xE5\xAD\x99\xE6\x82\x9F\xE7\xA9\xBA
1 column=cf1:sex, timestamp=1538030949219, value=\xE7\x94\xB7
2 column=cf1:age, timestamp=1538030949393, value=19
2 column=cf1:name, timestamp=1538030949314, value=\xE5\xAE\x89\xE7\x90\xAA\xE6\x8B\x89
2 column=cf1:sex, timestamp=1538030949350, value=\xE5\xA5\xB3
3 column=cf1:age, timestamp=1538030950752, value=20
3 column=cf1:name, timestamp=1538030949448, value=\xE7\x8B\x84\xE4\xBB\x81\xE6\x9D\xB0
3 column=cf1:sex, timestamp=1538030949487, value=\xE7\x94\xB7
3 row(s) in 0.0230 seconds
删除、更新、查看 相关类似
eg:查看:
1、hbase> get ‘ns1:t1’, ‘r1’
scan查询
1.限制条件
1、hbase>scan ‘qy’,{COLUMNS=>’name’}
2、hbase>scan ‘qy’,{COLUMNS=>’name:gender’}
3、hbase>scan ‘qy’,{COLUMNS=>[‘name’,’foo’]}
限制查找条数:
1、hbase>scan ‘qy’,{COLUMNS=>[‘name’,’foo’],LIMIT=>1}
2、hbase>scan ‘qy’,{COLUMNS=>[‘name’,’foo’],LIMIT=>2}
限制时间范围:
1、hbase>scan ‘qy’,{TIMERANGE=>[1448045892646,1448045892647]}
filter 过滤部分
hbase主键模糊查询:
1、hbase>scan ‘scores’,{FILTER=>org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes(‘Jerry’))}
PrefixFilter:rowKey前缀过滤
1、hbase>scan ‘qy’,{FILTER=>”PrefixFilter(‘001’)”}
2、hbase>scan ‘qy’,{FILTER=>PrefixFilter(‘t’)}
QualifierFilter:列过滤器
QualifierFilter对列的名称进行过滤,而不是列的值。
1、hbase>scan ‘qy’,{FILTER=>”PrefixFilter(‘t’) AND QualifierFilter(>=,’binary:b’)”}
TimestampsFilter:时间戳过滤器
1、hbase>scan ‘qy’,{FILTER=>”TimestampsFilter(1448069941270,1548069941230)” }
2、hbase>scan ‘qy’,{FILTER=>”(QualifierFilter(>=,’binary:b’)) AND (TimestampsFilter(1348069941270,1548069941270))” }
ColumnPaginationFilter
1、hbase>scan ‘qy’,{FILTER=>org.apache.hbase.filter.ColumnPaginationFilter.new(2,0)}
cannot load Java class org.apache.hbase.filter.ColumnPaginationFilter
hbase shell应用filter
1.导入需要的类
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.util.Bytes
2.执行命令:
scan ‘tablename’,STARTROW=>‘start’,COLUMNS=>[‘family:qualifier’],FILTER=>SingleColumnValueFilter.new(Bytes.toBytes(‘family’),Bytes.toBytes(‘qualifier’))
快照:
查看快照:
1、hbase> list_snapshots ‘ns1’
SNAPSHOT TABLE + CREATION TIME
student_snapshot20180529 gld:student(Thu Mar 29 10:12:28 +0800 2018)
student_snapshot20180929 gld:student (Sat Sep 29 18:24:24 +0800 2018)
2 row(s) in 0.0280 seconds
=> [“student_snapshot20180529”, “student_snapshot20180929”]
新建快照:
1、hbase> snapshot ‘sourceTable’, ‘snapshotName’
从快照复制生成一个新表:
1、hbase> clone_snapshot ‘snapshotName’, ‘gld:student’
分区
预分区
在建表时预分10个区:
1、create ‘gld:student’, ‘cf1’, {SPLITS => [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]}
则每个分区的Start Key和End Key分别为:
(~, 1),[1, 2),[2, 3),[3, 4),[4, 5),[5, 6),[6, 7),[7, 8),[8, 9),[9, ~)
查看HDFS是可以看到这个表下有10个文件夹(如果没有预分区,则只有一个文件夹):
$ hdfs dfs -ls /hbase/data/gld/student
Found 12 items
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/.tabledesc
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/.tmp
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/0d94e23b2b2c0b22ec9024907f65b78e
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/1b3c094e1a1c9d9434222e96f600fc60
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/31a515208c2621c6c3b3a0489c938197
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/4410dd4230c711965c871aecd8c1ffe8
drwxr-xr-x - hdfs supergroup 0 2018-10-23 15:27 /hbase/data/gld/student/4730dab32d57159db3b9214f6b908f2d
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:25 /hbase/data/gld/student/4ff074ef3ca1a7bf56461c606c1920a2
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/621cf72507b7f8942af1dca15241ecf5
drwxr-xr-x - hdfs supergroup 0 2018-10-23 15:29 /hbase/data/gld/student/8432b86e8bc1367c5872d796462281d6
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/c68c759df2f78c1006bc07c30a8681d1
drwxr-xr-x - hdfs supergroup 0 2018-10-31 16:31 /hbase/data/gld/student/fb9fb89a569c27ba1ca626fc3ab44c09
手动分区:
一开始没有分区:
使用切分键’1’一分为二:
继续将第二个Region进行切分,以’2’作为切分键:
1、hbase> split ‘regionName’, ‘splitKey’
2、hbase> split ‘gld:student,1,1538223641947’, ‘2’
合并分区:
1、hbase> merge_region ‘ENCODED_REGIONNAME’, ‘ENCODED_REGIONNAME’
2、hbase> merge_region ‘eea56b5303ed9aca9aa2b4adc14798b8’,‘e8324c9b047282a608588c8826484f5d’