第7周 HBase集群安装,管理

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)

你可能感兴趣的:(第7周 HBase集群安装,管理)