一、前提条件
JDK1.7+
Hadoop 2.5.0+
Zookeeper 3.4.5+
二、安装HBase
(1)下载HBase安装包并解压
下载地址:http://www.apache.org/dyn/closer.cgi/hbase/
#上传
rz
#解压
tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C /export/servers/
进入该目录下的conf目录
cd hbase-0.96.2-hadoop2/
ls
cd conf/
ls
配置hbase-env.sh文件
vim hbase-env.sh
#在最后添加
export JAVA_HOME=/export/servers/jdk1.8.0_73
export HBASE_MANAGES_ZK=false
配置hbase-site.xml文件
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>Master,Slave1,Slave2</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://Master:9000/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
编辑regionservers文件
#添加
vi regionservers
Slave1
Slave2
分发到其他机器上
scp -r hbase-0.96.2-hadoop2/ Slave1:/export/servers/
scp -r hbase-0.96.2-hadoop2/ Slave2:/export/servers/
Master启动hbase
启动hbase之前先启动hadoop
cd hbase-0.96.2-hadoop2/
ls
cd bin
ls
启动
./start-hbase.sh
./stop-hbase.sh
[root@Master hbase-0.96.2-hadoop2]# bin/start-hbase.sh
starting master, logging to /export/servers/hbase-0.96.2-hadoop2/bin/../logs/hbase-root-master-Master.out
localhost: starting regionserver, logging to /export/servers/hbase-0.96.2-hadoop2/bin/../logs/hbase-root-regionserver-Master.out
[root@Master hbase-0.96.2-hadoop2]# jps
3506 SecondaryNameNode
2739 QuorumPeerMain
3333 NameNode
5239 Jps
5000 HMaster
5115 HRegionServer
3662 ResourceManager
Master查看,可以看到HMaster
hbase启动成功
jps
Slave1,Slave2上可以看到HRegionServer
[root@Slave1 ~]# jps
3281 HRegionServer
3029 DataNode
3127 NodeManager
3337 Jps
1823 QuorumPeerMain
[root@Slave1 ~]#
[root@Slave2 ~]# jps
1586 QuorumPeerMain
2866 DataNode
2963 NodeManager
3268 Jps
3116 HRegionServer
[root@Slave2 ~]#
使用hbase shell进入hbase的命令行窗口
[root@Master hbase-0.96.2-hadoop2]# bin/hbase shell
2020-06-09 13:13:45,701 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.96.2-hadoop2, r1581096, Mon Mar 24 16:03:18 PDT 2014
hbase(main):001:0>
Hbase shell的一些命令
创建表
>create 'users','user_id','address','info'
#表users,有三个列族user_id,address,info
列出全部表
hbase(main):012:0> list
TABLE
users
1 row(s) in 0.0600 seconds
=> ["users"]
hbase(main):013:0>
得到表的描述
describe 'users'
删除表
#创建表
>create 'users_tmp','user_id','address','info'
#删除表
>disable 'users_tmp'
>drop 'users_tmp'
添加记录
put 'users','xiaoming','info:age','24';
put 'users','xiaoming','info:birthday','1987-06-17';
put 'users','xiaoming','info:company','alibaba';
put 'users','xiaoming','address:contry','china';
put 'users','xiaoming','address:province','zhejiang';
put 'users','xiaoming','address:city','hangzhou';
put 'users','zhangyifei','info:birthday','1987-4-17';
put 'users','zhangyifei','info:favorite','movie';
put 'users','zhangyifei','info:company','alibaba';
put 'users','zhangyifei','address:contry','china';
put 'users','zhangyifei','address:province','guangdong';
put 'users','zhangyifei','address:city','jieyang';
put 'users','zhangyifei','address:town','xianqiao'
获取一条记录
#取得一个id的所有数据
>get 'users','xiaoming'
#获取一个id,一个列族的所有数据
>get 'users','xiaoming','info'
#获取一个id,一个列族中一个列的
所有数据
get 'users','xiaoming','info:age'
更新记录
>put 'users','xiaoming','info:age' ,'29'
>get 'users','xiaoming','info:age'
>put 'users','xiaoming','info:age' ,'30'
>get 'users','xiaoming','info:age'
获取单元格数据的版本数据
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}
>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}
获取单元格数据的某个版本数据
〉get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
全表扫描
>scan 'users'
hbase(main):003:0> scan 'users'
ROW COLUMN+CELL
xiaoming column=address:contry, timestamp=1591693491250, value=china
xiaoming column=address:province, timestamp=1591693491296, value=zhejiang
xiaoming column=info:age, timestamp=1591694827624, value=29
xiaoming column=info:birthday, timestamp=1591693490676, value=1987-06-17
xiaoming column=info:company, timestamp=1591693490875, value=alibaba
1 row(s) in 0.1080 seconds
hbase(main):004:0>
删除xiaoming值的’info:age’字段
>delete 'users','xiaoming','info:age'
>get 'users','xiaoming'
删除整行
>deleteall 'users','xiaoming'
统计表的行数
>count 'users'
清空表
>truncate 'users'