HBase安装与配置(完全分布式)

------------------------------------------------

一、前言  

二、环境

三、配置 

1.解压hbase安装包 

2.配置系统环境变量

3.修改conf/hbase-env.sh脚本,设置环境变量 

4.编辑hbase-site.xml进行配置 

5.修改regionservers,添加所有slave主机 

6.修改hadoop下的hdfs-site.xml 

7.分发到各个slave主机

8.启动Hbase 

9.验证Hmaster已经启动 

四、测试

-----------------------------------------------



一、前言  

    HBase �C Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

    HBase在完全分布式环境下,由Master进程负责管理RegionServers集群的负载均衡以及资源分配,ZooKeeper负责集群元数据的维护并且监控集群的状态以防止单点故障,每个RegionServer会负责具体数据块的读写,HBase所有的数据存储在HDFS系统上。


二、环境

系统:CentOS6.4 32位

hadoop版本:hadoop-0.20.2.tar.gz (已安装)

HBase版本:hbase-0.90.5.tar.gz

请注意hadoop与hbase版本兼用问题。

在上一篇博客基础上做,已安装hadoop,新增slave3主机

http://yinuoqianjin.blog.51cto.com/8360868/1424948

IP规划:

192.168.2.101  master

192.168.2.102  slave1

192.168.2.103  slave2

192.168.2.104  slave3


三、配置

  1. 解压hbase安装包(先在master主机上安装及配置hbase,然后再分发给所有slave主机) 

# tar -zxvf hbase-0.90.5.tar.gz -C /usr/
# mv /usr/hbase-0.90.5  /usr/hbase
# cd /usr/hbase/
# chown -R hadoop:hadoop /usr/hbase/

2.配置系统环境变量(所有节点都要配置)

# vim /etc/profile                //仿照JDK及hadoop的环境变量进行设置
JAVA_HOME=/usr/java/jdk1.7.0_45
HADOOP_HOME=/usr/hadoop
HBASE_HOME=/usr/hbase
PATH=$PATH:$JAVA_HOME/bin
PATH=$PATH:$HADOOP_HOME/bin
PATH=$PATH:$HBASE_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME HADOOP_HOME HBASE_HOME
# . /etc/profile

3.修改conf/hbase-env.sh脚本,设置环境变量 

# su - hadoop
$ mkdir  /usr/hbase/tmp           //本地文件系统的临时文件夹
$ mkdir /usr/hadoop/tmp/pids
$ cd /usr/hbase/conf/
$ vim hbase-env.sh 
 25 export JAVA_HOME=/usr/java/jdk1.7.0_45
 28 export HBASE_CLASSPATH=/usr/hadoop/conf
 68 export HBASE_PID_DIR=/usr/hadoop/tmp/pids
 76 export HBASE_MANAGES_ZK=true               //使用hbase自带的zookeeper,不再独立安装

4.编辑hbase-site.xml进行配置 

$ vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/usr/hbase</value>    //不要使用主机IP,使用主机名。
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/hbase/tmp</value>
</property>
<property>
<name>hbase.master</name>                   //如果是多台master主机,使用hbase.master.port
<value>master:60000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave2,slave3</value>         //一定要是单数,这就是为何添加slave3主机目的
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/hbase/tmp/zookeeper</value>
</property>
</configuration>

5.修改regionservers,添加所有slave主机

$ vim regionservers 
192.168.2.102
192.168.2.103
192.168.2.104

6.修改hadoop下的hdfs-site.xml

$ vim /usr/hadoop/conf/hdfs-site.xml 
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
$ cp /usr/hadoop/hadoop-0.20.2-core.jar /usr/hbase/lib/

hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机

hbase.tmp.dir 本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(默认/tmp,会在重启时清除)     

hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群 

hbase.master设置hbase的master主机名和端口 

hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数

7.将master主机的hbase配置文件分发到各个slave主机

$ scp -r /usr/hbase/ slave1:/usr/          //分发到slave主机后一定要查看所属关系。 
$ scp -r /usr/hbase/ slave2:/usr/
$ scp -r /usr/hbase/ slave3:/usr/

8.启动Hbase

[root@master ~]# su - hadoop
[hadoop@master ~]$ start-all.sh            //先启动hadoop服务,再启动hbase服务
[hadoop@master ~]$ start-hbase.sh

9.验证Hmaster已经启动  

[hadoop@master ~]$ jps
4575 JobTracker
7113 Jps
5777 HMaster
4510 SecondaryNameNode
4763 NameNode
[hadoop@slave1 ~]$ jps
3929 Jps
3509 HRegionServer
3693 HQuorumPeer
3246 TaskTracker
[hadoop@slave2 ~]$ jps
3649 HQuorumPeer
3465 HRegionServer
3211 TaskTracker
3872 Jps
[hadoop@slave3 ~]$ jps
3887 Jps
3481 HRegionServer
3230 TaskTracker
3671 HQuorumPeer

四、测试

1.登录hbase客户端

$ 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> version
0.90.5, r1212209, Fri Dec  9 05:40:36 UTC 2011
hbase(main):002:0> status
3 servers, 0 dead, 0.6667 average load

2.新建数据表,并插入3条记录

hbase(main):003:0> create 'test1','cf'
0 row(s) in 0.4900 seconds
hbase(main):004:0> list
TABLE                                                                                   
test1                                                                                    1 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test1','row1','cf:a','values1'
0 row(s) in 0.2470 seconds
hbase(main):007:0> put 'test1','row2','cf:b','values2'
0 row(s) in 0.0210 seconds
hbase(main):008:0> put 'test1','row3','cf:c','values3'
0 row(s) in 0.0190 seconds

3.查看插入的数据

hbase(main):009:0> scan 'test1'
ROW                            COLUMN+CELL                                                                          
row1                           column=cf:a, timestamp=1402895980002, value=values1                                    
row2                           column=cf:b, timestamp=1402895988854, value=values2                                     
row3                           column=cf:c, timestamp=1402895997772, value=values3                                   
3 row(s) in 0.0710 seconds

4.读取单条记录 

hbase(main):010:0> get 'test1','row1'
COLUMN                          CELL                                                                                  
cf:a                           timestamp=1402895980002, value=values1                                               
1 row(s) in 0.0310 seconds

5.停用并删除数据表

hbase(main):012:0> disable 'test1'
0 row(s) in 2.1270 seconds
hbase(main):013:0> drop 'test1'
0 row(s) in 1.2400 seconds
hbase(main):014:0> list
TABLE                                                                                                                
0 row(s) in 0.0260 seconds

6.退出

hbase(main):015:0> quit


PS:在此肯定会遇到多种错误,即使按照我的步骤,也不见得能完全正常,我琢磨了两天,看了各种文档,修改了太多的地方,比如master主机的hmaster进程无法启动,一切正常后插入数据报错等等,生活不就在于折腾吗,以上步骤只是大概步骤,祝好运!


 



你可能感兴趣的:(安装,配置,hbase)