Hbase的安装和使用
准备工具
- 一部安装好的hadoop和zookeeper的虚拟机
- Hbase压缩包
安装步骤
安装单机版的Hbase
- 上传解压
- 配置Hbase的环境变量
export HBASE_HOME=/opt/software/Hbase/hbase-2.0.0
export PATH=$PATH:$HBASE_HOME/bin
-
修改Hbase的配置文件
hbase-env.sh
hbase-site.xml<configuration> <property> <name>hbase.rootdir</name> <value>file:///opt/software/Hbase/data</value> </property> </configuration>
使用单机版的Hbase
- 开启hbase
start-hbase.sh
3. 进入hbase命令行
hbase shell
4. hbase的基本命令语句
(1) 创建表
#没有为列族创建版本那么它只有一个版本
create 'user','a1','a2'
//创建多版本的列族
create 'student',{NAME=>'a1',VERSIONS=>'3'},{NAME=>'a2',VERSIONS=>'3'}
(2)查询hbase下的所有表:
(3)往表中添加数据
put 'user','1','a1:name','zhangsan'
put 'user','1','a1:age','18'
put 'user','2','a1:name','lisi'
put 'user','2','a1:age','19'
put 'user','3','a1:name','wangwu'
put 'user','3','a1:age','20'
put 'student','1','a1:name','zhangsan'
put 'student','1','a1:name','lisi'
put 'student','1','a1:name','wangwu'
(4)获取数据
获取数据的两个必备参数:
表名和主键
#获取user表中a1列族中列名为name的数据
get 'user','1','a1:name'
#获取user表中a1列族中的所有数据
get 'user','1','a1'
#获取student表中row key为1,列族为a1,版本号最新的2个数据
get 'student','1',{COLUMNS=>'a1',VERSIONS=>2}
#获取user表中row key为1,列名中含有a的数据
get 'user','1',{FILTER=>"QualifierFilter(=,'substring:a')"}
(5)查询数据
#查询user表中的所有信息
scan 'user'
#查询user表中列族为a1的所有信息
scan 'user',{COLUMNS=>'a1'}
#查询user表中列族为a1,a2的所有信息
scan 'user',{COLUMNS=>['a1','a2']}
#查询user表中列族为a1,列名为name的所有信息
scan 'user',{COLUMNS=>'a1:name'}
#查询user表中列族为a1,列名为name的所有版本最新的2个信息
scan 'user',{COLUMNS=>'a1:name',VERSIONS=>2}
#查询user表中列族为a1,a2且列名中含有a字符的信息
scan 'user',{COLUMNS=>['a1','a2'],FILTER=>"QualifierFilter(=,'substring:a')"}
#查询user表中列族为a1,rk范围是[1,2)的数据
scan 'user',{COLUMNS=>'a1',STARTROW=>'1',ENDROW=>'3'}
(6)删除数据
删除必须包含表名,主键,列名的参数
delete 'user','1','a1:name'
(7)清空表
truncate 'user'
(8)查看表的结构
desc 'user'
(9)修改表的结构
#为user表添加一个列族a3
alter 'user',NAME=>'a3'
#为user表删除一个列族a3
alter 'user','delete'=>'a3'
#修改user表的列族a1的版本个数为3
alter 'user',NAME=>'a1',VERSIONS=>3
安装集群hbase
- 首先关闭单机版hbase
- 确定三台虚拟机之间没有时间误差
检查虚拟机系统时间
date
如果有,就同步时间
#安装ntpdate
yum install -y ntp
#同步时间
ntpdate 210.72.145.44
ntp常用服务器:
- 中国国家授时中心:210.72.145.44
- NTP服务器(上海):ntp.api.bz
- 美国:time.nist.gov
- 复旦:ntp.fudan.edu.cn
- 微软公司授时主机(美国):time.windows.com
- 台警大授时中心(台湾):asia.pool.ntp.org
- 修改配置文件
hbase-env.sh
true:使用自己内部的zookeeper
false:使用外部的zookeeper
hbase-site.xml
<configuration>
<!--设置hbase的数据存储目录-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://Centos161:9000/hbase</value>
</property>
<!--指定hbase是否为分布式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--指定hbase使用外部zk的地址-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>Centos161:2181,Centos162:2181,Centos163:2181</value>
</property>
<!--分布式主机之间的使用误差允许的值,最大不超过3min,单位ms-->
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
<!--指定浏览器访问的端口号-->
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
regionservers
Centos162
Centos163
删除单机版的data文件夹
- 分发到其他机器
scp -r /opt/software/Hbase root@Centos162:/opt/software/
scp -r /opt/software/Hbase root@Centos163:/opt/software/
scp -r /etc/profile root@Centos162:/etc/
scp -r /etc/profile root@Centos163:/etc/
启动集群hbase
- 启动hadoop
start-all.sh - 启动zookeeper
zkServer.sh start - 启动hbase
start-hbase.sh
主节点:
副节点:
运行结果: