一 搭建HBase的环境
1.环境准备:
解压 tar -zxvf hbase-1.3.1-bin.tar.gz -C /application
ln -s hbase-1.3.1-bin hbash
设置环境变量 vi ~/.bash_profile
HBASE_HOME=/application/hbash
export HBASE_HOME
PATH=$HBASE_HOME/bin:$PATH
export PATH
source ~/.bash_profile
2.配置
进入hbase-1.3.1/conf/目录,修改配置文件:
1)vi hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/
//保存pid文件
export HBASE_PID_DIR=/data0/hbase/pids
//修改HBASE_MANAGES_ZK,禁用HBase自带的Zookeeper,因为我们是使用独立的Zookeeper
export HBASE_MANAGES_ZK=false
2)vi hbase-site.xml
<configuration>
<!-- 设置HRegionServers共享目录,请加上端口号 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:9000/hbase</value>
</property>
<!-- 指定HMaster主机 -->
<property>
<name>hbase.master</name>
<value>hdfs://hadoop01:60000</value>
</property>
<!-- 启用分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定Zookeeper集群位置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value> hadoop01:2181, hadoop02:2181, hadoop03:2181</value>
</property>
<!-- 指定独立Zookeeper安装路径 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/application/zookeeper</value>
</property>
<!-- 指定ZooKeeper集群端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
3)vi regionservers
修改regionservers文件,因为当前是使用独立的Zookeeper集群,所以要指定RegionServers所在机器
hadoop01
hadoop02
hadoop03
4)创建pid文件保存目录
在/home/hadoop/目录下:
mkdir /data0/hbase/pids -p
3、拷贝HBase到其他机器
cd /home/hadoop/
scp -r hbase-1.3.1 hadoop@master189:/home/hadoop/
scp -r hbase-1.3.1 hadoop@slave190:/home/hadoop/
4、启动HBase
在主节点上启动HBase(这里的主节点是指NameNode状态为active的节点,而非指文中对本实验的机器声明):
cd hbase-1.3.1/bin
./start-hbase.sh
//查看HMaster、Regionserver进程是否启动
jps
注意:此时Hadoop集群应处于启动状态,并且是在主节点执行start-hbase.sh启动HBase集群,否则HMaster进程将在启动几秒后消失,而备用的HMaster进程需要在备用主节点单独启动,命令是:./hbase-daemon.sh
start master。
在备用主节点启动HMaster进程,作为备用HMaster:
cd hbase-1.3.1/bin
./hbase-daemon.sh start master
5、HA高可用测试
在浏览器中输入 ip:16010
,查看主节点和备用主节点上的HMaster的状态,在备用主节点的web界面中,可以看到“Current
Active Master: master188”,表示当前HBase主节点是master188机器;
主节点—>备用主节点
这里的主节点指使用start-hbase.sh命令启动HBase集群的机器
kill掉主节点的HMaster进程,在浏览器中查看备用主节点的HBase是否切换为active;
若上述操作成功,则在主节点启动被杀死的HMaster进程:
cd hbase-1.3.1/bin/
./hbase-daemon.sh start master
然后,kill掉备用主节点的HMaster进程,在浏览器中查看主节点的HBase是否切换为active,若操作成功,则HBase高可用集群搭建完成;
故障排查
- 同步删除Zookpeer 中hbase的值
[root@hadoop01 bin]# ./zkCli.sh
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, yarn-leader-election, hadoop-ha, hbase, rmstore]
[zk: localhost:2181(CONNECTED) 2] rmr /hbase
[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper, yarn-leader-election, hadoop-ha, rmstore]
hadoop-ha, hbase, rmstore]
[zk: localhost:2181(CONNECTED) 2] rmr /hbase
[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper, yarn-leader-election, hadoop-ha, rmstore]