HBase集群安装部署
Master节点
- 下载安装包
1
https://archive.apache.org/dist/hbase/2.3.3/
- 解压安装包到指定的规划目录
/opt/software
1
2tar -zxvf hbase-2.3.3-bin.tar.gz -C /opt/servers
配置文件
指定 JDK
1 | vcd /opt/servers/hbase-2.3.3/conf |
修改hbase-site.xml
vim hbase-site.xml
1 | <!--指定hbase是分布式的 PS:如果配置文件中有则修改,没有则添加--> |
修改regionservers文件
指定regionserver节点vim regionservers
删除文件中的所有内容!!!在添加以下内容
1 | master |
配置高可用
hbase 的 conf 目录下创建文件backup-masters(Standby Master)
这样启动的时候会在 master和salve1都启动一个HMaster 节点
1 | slave2 |
分发 HBase
1 | cd /opt/servers |
配置 HBase 环境变量
所有机器都需要配置
1 | vim /etc/profile |
启动 Hbase 集群
- 前提条件:必须先启动hadoop和zookeeper集群
1
2
3
4
5
6
7# 如果已经启动则忽略
# master 节点 启动 Hadoop
start-dfs.sh
# slave2 节点 启动 YARN
satrt-yarn.sh
# master 节点 启动zk
~/shells/zk.sh start
启动 / 停止 HBase
1 | start-hbase.sh |
启动完成后可以通过 http://master:16010 进入Hbase Web端
启动hbase集群后如果只显示master 请检查配置和系统时间是否一致
HBase shell 基本操作
1、进入Hbase客户端命令操作界面
1 | hbase shell |
2、查看帮助命令
1 | hbase(main):001:0> help |
3、查看当前数据库中有哪些表
1 | hbase(main):006:0> list |
4、创建一张test表, 包含base_info、extra_info两个列族\
1 | hbase(main):001:0> create 'test', 'base_info', 'extra_info' |
5、添加数据操作
向test表中插入信息,row key为 rk1,列族base_info中添加name列标示符,值为wang
1
hbase(main):001:0> put 'test', 'rk1', 'base_info:name', 'wang'
向test表中插入信息,row key为rk1,列族base_info中添加age列标示符,值为30
1
hbase(main):001:0> put 'test', 'rk1', 'base_info:age', 30
向test表中插入信息,row key为rk1,列族extra_info中添加address列标示符,值为shanghai
1
hbase(main):001:0> put 'test', 'rk1', 'extra_info:address', 'shanghai'
6、查询数据
6.1 通过rowkey进行查询
获取表中row key为rk1的所有信息
1
2
3
4
5
6
7hbase(main):001:0> get 'test', 'rk1'
6.2 查看rowkey下面的某个列族的信息
- 获取test表中row key为rk1,base_info列族的所有信息
```shell
hbase(main):001:0> get 'test', 'rk1', 'base_info'
6.3 查看rowkey指定列族指定字段的值
获取表中row key为rk1,base_info列族的name、age列标示符的信息
1
hbase(main):008:0> get 'test', 'rk1', 'base_info:name', 'base_info:age'
6.4 查看rowkey指定多个列族的信息
获取test表中row key为rk1,base_info、extra_info列族的信息
1
2
3
4
5
6
7hbase(main):010:0> get 'test', 'rk1', 'base_info', 'extra_info'
或者
hbase(main):011:0> get 'test', 'rk1', {COLUMN => ['base_info', 'extra_info']}
或者
hbase(main):012:0> get 'test', 'rk1', {COLUMN => ['base_info:name',
'extra_info:address']}
6.5 指定rowkey与列值查询
获取表中row key为rk1,cell的值为wang的信息
1
2hbase(main):001:0> get 'test', 'rk1', {FILTER => "ValueFilter(=,
'binary:wang')"}
6.6 指定rowkey与列值模糊查询
获取表中row key为rk1,列标示符中含有a的信息
1 | hbase(main):001:0> get 'test', 'rk1', {FILTER => " |
6.7 查询所有数据
查询test表中的所有信息
1 | hbase(main):000:0> scan 'test' |
6.8 列族查询
查询表中列族为 base_info 的信息
1 | hbase(main):001:0> scan 'test', {COLUMNS => 'base_info'} |
6.9 指定多个列族与按照数据值模糊查询
查询test表中列族为 base_info 和 extra_info且列标示符中含有a字符的信息
1 | hbase(main):001:0> scan 'test', {COLUMNS => ['base_info', 'extra_info'], FILTER |
6.10 rowkey的范围值查询(非常重要)
- 查询test表中列族为base_info,rk范围是[rk1, rk3)的数据(rowkey底层存储是字典序)
- 按rowkey顺序存储。
1 | hbase(main):001:0> scan 'test', {COLUMNS => 'base_info', STARTROW => 'rk1', |
6.11 指定rowkey模糊查询
查询test表中row key以rk字符开头的
1 | hbase(main):001:0> scan 'test',{FILTER=>"PrefixFilter('rk')"} |
7、更新数据
更新操作同插入操作一模一样,只不过有数据就更新,没数据就添加
7.1 更新数据值
把test表中rowkey为rk1的base_info列族下的列name修改为liang
1 | hbase(main):030:0> put 'test', 'rk1', 'base_info:name', 'liang' |
8、删除数据和表
8.1 指定rowkey以及列名进行删除
删除test表row key为rk1,列标示符为 base_info:name 的数据
1 | hbase(main):002:0> delete 'test', 'rk1', 'base_info:name' |
8.2 指定rowkey,列名以及时间戳信息进行删除
删除test表row key为rk1,列标示符为base_info:name的数据
1 | scan 'test', {COLUMNS => 'base_info', RAW => true, VERSIONS => 3} |
8.3 删除列族
删除 base_info 列族
1 | hbase(main):001:0> |
8.4 清空表数据
1 | hbase(main):001:0> truncate 'test' |
8.5 删除表
1 | 先disable 再drop |