HBase环境准备

HBase下载地址:http://archive.apache.org/dist/hbase/

tar -zxvf hbase-1.4.11-bin.tar.gz #解压hbase

vim /etc/profile #配置hbase环境变量

在最后加上export PATH=$PATH:/usr/local/soft/hbase-1.4.11/bin

source /etc/profile #重启,使hbase生效

chown -R hadoop hbase-1.4.11 #给hbase赋hadoop权限

bin/hbase version #查看hbase是否配置成功,若成功,则显示hbase的版本信息

HBase配置

hbase单机模式下不需要hadoop,伪分布式模式和分布式模式下需要hadoop

HBase单机模式

hbase-env.sh的配置
vim conf/hbase-env.sh #配置下面的信息
export JAVA_HOME=/usr/local/soft/jdk1.8.0_231 #配置java环境变量
export HBASE_MANAGES_ZK=true #配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。
注:hbase-env.sh中本来就存在这些变量的配置,大家只需要删除前面的#并修改配置内容即可。
 
hbase-site.xml的配置
<property>
<!--hbase.rootdir用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。-->
<name>hbase.rootdir</name>
<value>file:///usr/local/soft/hbase-1.4.11/hbase-tmp</value>
</property>
 
启动和运行
bin/start-hbase.sh #启动
bin/hbase shell #运行,可以在此操作hbase数据库

hbase 不适合 场景 hbase环境_数据

bin/stop-hbase.sh #停止hbase服务

注意:如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录下的logs子目录中的日志文件查看错误原因。

 

HBase伪分布式模式

hbase-env.sh配置
export JAVA_HOME=/usr/local/soft/jdk1.8.0_231
export HBASE_CLASSPATH=/usr/local/soft/hadoop/conf #HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录
export HBASE_MANAGES_ZK=true
 
hbase-site.xml配置
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

启动hadoop,参考:hadoop系列之环境搭建(一)

启动和运行hbase和单机模式一样

注:启动关闭Hdoop和HBase的顺序一定是:启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop

 

HBase数据库基本操作

在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本,从而完成“改”操作,旧的版本依旧保留,系统会定时回收垃圾数据,只留下最新的几个版本,保存的版本数可以在创建表的时候指定。

 

create 'student','Sname','Ssex','Sage','Sdept','course' #创建了一个“student”表,属性有:Sname,Ssex,Sage,Sdept,course。HBase的表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后第一个数据。
describe 'student' #查看student表基本信息

 

添加数据

HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。插入数据和更新数据都是用put命令。

put 'student','95001','Sname','LiYing' #为student表添加了学号为95001,名字为LiYing的一行数据,其行键为95001

put 'student','95001','course:math','80' #为95001行下的course列族的math列添加了一个数据

 

删除数据

在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1. delete用于删除一个数据,是put的反向操作;2. deleteall操作用于删除一行数据。

delete 'student','95001','Ssex' #删除了student表中95001行下的Ssex列的所有数据

deleteall 'student','95001 ' #删除了student表中的95001行的全部数据。

 

查看数据

HBase中有两个用于查看数据的命令:1. get命令,用于查看表的某一行数据;2. scan命令用于查看某个表的全部数据。

get 'student','95001' #返回的是‘student’表‘95001’行的数据。

scan 'student' #返回的是‘student’表的全部数据

 

删除表

删除表有两步,第一步先让该表不可用,第二步删除表。

disable 'student' #让该表不可用

drop 'student' #删除表

 

查询表历史版本

create 'teacher',{NAME=>'username',VERSIONS=>5} #在创建表的时候,指定保存的版本数(假设指定为5)
get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5} #查询时,指定查询的历史版本数。默认会查询出最新的数据。
exit #退出HBase数据库操作