服务器准备
本文搭建完全分布式Hbase在【Hadoop学习笔记三:高可用集群搭建(Hadoop2.x)】https://www.jianshu.com/p/666ff9bbf784 基础上进行的,使用该文搭建好的HDFS系统,使用在node02/node03/node04上搭建好的zookeeper。

新的免密钥方式(rsa方式)
例如:node04对01、02、03免密钥
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub node01
ssh-copy-id -i .ssh/id_rsa.pub node02
ssh-copy-id -i .ssh/id_rsa.pub node03
使用rsa,需要去hadoop里修改一个配置文件
[root@node01 data] cd /opt/sxt/hadoop-2.6.5/etc/hadoop/
[root@node01 data] vi hdfs-site.xml
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
注:这里只是记录一种新的方式,本文搭建还是使用之前文章中的免密钥方式,实现node04对01、02、03免密钥
时间:各个节点的时间必须一致
使用时间服务器,四台节点同时执行
[root@node01 ~] yum install ntpdate
[root@node01 ~] ntpdate ntp1.aliyun.com
[root@node01 ~] date
也可以把ntpdate ntp1.aliyun.com写成一个脚本,调为开机启动。
解压配置
搭建单节点HBase时已在node01上解压了HBase,此次先修改node01上的配置
1、hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
export HBASE_MANAGES_ZK=false
2、hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node02,node03,node04</value>
</property>
3、regionservers
[root@node01 conf] vi regionservers
#写入(注意一个节点一行)
node2
node3
node4
4、backup-masters
#新增一个backup-masters文件
[root@node01 conf] vi backup-masters
#写入
node04
注意:规划node01和node04是HBase的主备HMaster,如果从node01上启动,这里写node04,如果从node04上启动,这里写node01,也就是在哪台启动哪台就是主。
5、拷贝hdfs-site.xml到conf目录
[root@node01 conf] cp /opt/sxt/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./
6、分发habse目录到node02/node03/node04
[root@node01 conf] scp -r /opt/sxt/hbase/ node02:/opt/sxt
[root@node01 conf] scp -r /opt/sxt/hbase/ node03:/opt/sxt
[root@node01 conf] scp -r /opt/sxt/hbase/ node04:/opt/sxt
7、修改各个节点的环境变量
vi /etc/profile
export HBASE_HOME=/opt/sxt/hbase
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
. /etc/profile
启动测试
1、启动
在node01节点启动,注意启动前HDFS一定要启动 ResourceManager起不起无所谓
[root@node01 ~] start-hbase.sh
starting master, logging to /opt/sxt/hbase/logs/hbase-root-master-node01.out
node03: starting regionserver, logging to /opt/sxt/hbase/bin/../logs/hbase-root-regionserver-node03.out
node04: starting regionserver, logging to /opt/sxt/hbase/bin/../logs/hbase-root-regionserver-node04.out
node02: starting regionserver, logging to /opt/sxt/hbase/bin/../logs/hbase-root-regionserver-node02.out
node04: starting master, logging to /opt/sxt/hbase/bin/../logs/hbase-root-master-node04.out
浏览器查看:http://node01:60010
2、测试高可用
[root@node01 conf] jps
2306 Jps
1440 JournalNode
1567 DFSZKFailoverController
2081 HMaster
1257 NameNode
[root@node01 conf] kill -9 2081
浏览器查看:http://node04:60010
发现并没有主备切换,node01/node04都访问不到
查看日志发现是node04没有对node01做免密钥,再去测试发现主节点变为node04
再去单独启动node01,此时node01作为备加入
hbase-daemon.sh start master
3、查看zookeeper
在node02上执行 zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, yarn-leader-election, hadoop-ha, zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /hbase
[meta-region-server, backup-masters, table, draining, region-in-transition, table-lock, running, master, namespace, hbas
eid, online-snapshot, replication, splitWAL, recovering-regions, rs]
网友评论