Hbase安装:单机模式
#下载及解压hbase安装包
http://download.csdn.net/detail/woshigeshou123/5452389
#修改conf/hbase-env.sh脚本,设置环境变量
[root@hadoop1 hbae]# tar zxf hbase-0.90.5.tar.gz
[root@hadoop1 hbae]# cd hbase-0.90.5/conf/
[root@hadoop1 conf]# vi hbase-env.sh
# The java implementation to use. Java 1.6 required.
# export JAVA_HOME=/usr/java/jdk1.6.0/
export JAVA_HOME=/usr/jdk1.7.0_09
#编辑hbase-site.xml进行配置
[root@hadoop1 conf]# vi hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///nosql/hbae/hbase-0.90.5/data</value>
</property>
</configuration>
#启动Hbase
[root@hadoop1 conf]# cd /nosql/hbae/hbase-0.90.5/bin/
[root@hadoop1 bin]# ./start-hbase.sh
starting master, logging to /nosql/hbae/hbase-0.90.5/bin/../logs/hbase-root-master-hadoop1.out
#验证Hmaster已经启动
[root@hadoop1 bin]# jps
3715 Jps
3635 HMaster
#进入shell
[root@hadoop1 bin]# ./hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011
hbase(main):001:0> status
1 servers, 0 dead, 3.0000 average load
hbase(main):002:0> version
0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011
hbase(main):003:0> quit
[root@hadoop1 bin]#
Hbase安装:完全分布模式
安装HBase之前需要先安装Hadoop,因为HBase是运行在Hadoop集群上的。安装Hadoop可以参考: http://blog.csdn.net/zq9017197/article/details/18043595
#编辑hbase-env.xml
[root@hadoop1 hbae]# tar zxf hbase-0.90.5.tar.gz
[root@hadoop1 hbae]# cd hbase-0.90.5/conf/
[root@hadoop1 conf]# vi hbase-env.sh
export JAVA_HOME=/usr/jdk1.7.0_09
export HBASE_CLASSPATH=/nosql/hadoop/hadoop-0.20.2/conf
#编辑hbase-site.xml
[root@hadoop1 conf]# vi hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1,hadoop2,hadoop3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/nosql/hbase/hbase-0.90.5/zookeeper_data</value>
</property>
#编辑regionservers文件
[root@hadoop1 conf]# vi regionservers
hadoop1
hadoop2
hadoop3
#把Hbase复制到其它节点
[root@hadoop1 hbase]# scp -r ./hbase-0.90.5 hadoop2:/nosql/hbase/
[root@hadoop1 hbase]# scp -r ./hbase-0.90.5 hadoop3:/nosql/hbase/
#启动Hbase
[root@hadoop1 hbase]# /nosql/hadoop/hadoop-0.20.2/bin/start-all.sh
[root@hadoop1 hbase]# /nosql/hbase/hbase-0.90.5/bin/start-hbase.sh
注:集群安装参考: http://f.dataguru.cn/thread-131274-1-1.html
实验虽然成功了,但还有好多地方不明白:
不明白为什么要先用hadoop的jar包去覆盖hbase的,然后再用hbase的jar包去覆盖hadoop的jar包呢?
不明白为什么hbase要启动两次才能正常使用?而且看logs里面还有一堆报错但后面的验证表面正常!
##Web管理界面
http://192.168.136.128:60010/master.jsp
#验证启动
##在一个节点插入数据:
hbase(main):013:0> create 'test', 'cf'
0 row(s) in 1.2680 seconds
hbase(main):014:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1700 seconds
hbase(main):015:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase(main):016:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0150 seconds
##在其它节点查询:
hbase(main):002:0> get 'test','row1'
COLUMN CELL
cf:a timestamp=1389632444075, value=value1
1 row(s) in 0.0680 seconds
hbase(main):003:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1389632444075, value=value1
row2 column=cf:b, timestamp=1389632458929, value=value2
row3 column=cf:c, timestamp=1389632464747, value=value3
3 row(s) in 0.0380 seconds
Shell
#Shell命令帮助
hbase(main):017:0> help
#查询数据库状态
hbase(main):024:0>status
#查询数据库版本
hbase(main):025:0>version
#创建表
hbase(main):011:0>create 'member','member_id','address','info'
#查看表信息
hbase(main):012:0>list 'member'
hbase(main):006:0>describe 'member'
#删除列族:alter、disable、enable命令
hbase(main):004:0>disable 'member'
hbase(main):005:0>alter'member',{NAME=>'member_id',METHOD=>'delete'}
hbase(main):008:0> enable 'member'
#列出所有的表
hbase(main):028:0>list
#删除表
hbase(main):029:0>disable 'temp_table'
hbase(main):030:0>drop 'temp_table'
#查询一个表是否存在
hbase(main):021:0>exists 'member'
#判断表是否enable或disable
hbase(main):034:0>is_enabled 'member'
hbase(main):032:0>is_disabled 'member'
#插入记录
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
#获取一个行健的所有数据
hbase(main):001:0>get 'member','scutshuxue'
#获取一个行键,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'
#获取一个行键,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age'
#更新一条记录
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'
hbase(main):005:0>get 'member','scutshuxue','info:age'
#通过timestamp来获取数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1389634041166}
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1389634168862}
#全表扫描
hbase(main):013:0>scan 'member'
#删除指定行键的字段
hbase(main):016:0>delete 'member','temp','info:age'
#删除整行
hbase(main):001:0>deleteall 'member','xiaofeng'
#查询表中有多少行
hbase(main):019:0>count 'member'
#清空表
hbase(main):035:0>truncate 'member'
#Hbase API
http://hbase.apache.org/apidocs/index.html
什么情况下使用Hbase?
成熟的数据分析主题,查询模式已经确立并且不轻易改变
传统的关系型数据库已经无法承受负荷,高速插入,大量读取
适合海量的,但同时也是简单的操作(例如key-value)