实验环境:
centos7,共四台虚拟机,对应关系如下:
master 192.168.159.101 hbase主节点
node1 192.168.159.102 hbase子节点 zookeeper
node2 192.168.159.103 hbase子节点 zookeeper
node3 192.168.159.104 hbase子节点 zookeeper
软件版本:
hadoop2.7.3
zookeeper-3.4.10
hbase-1.3.0
一、搭建分布式zookeeper
zookeeper集群节点的数量最好是奇数,具体原因可以自行搜索,这里搭建的时候没有在master上安装zookeeper,这样既满足了zookeeper节点是奇数同时又减轻了主节点的压力。
1.首先解压压缩包
找到压缩包的位置,进入压缩包所在的目录,执行解压命令
tar -zxvf zookeeper-3.4.10.tar.gz
2.创建目录
在zookeeper安装目录下创建存放数据和日志的目录
mkdir data
mkdir log
3.修改配置文件
进入conf目录中,将zoo_sample.cfg重命名为zoo.cfg并进行编辑
cd zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
将dataDir和dataLogDir前的注释符号#去掉,并修改为自己创建的目录
dataDir=/home/hadoop/zookeeper-3.4.10/data
dataLogDir=/home/hadoop/zookeeper-3.4.10/logs
其中,dataDir用来存放zookeeper存放的数据,dataLogDir用来存放日志文件
添加安装zookeeper的节点对应的地址
第一台机器就写 server.1=node1:2888:3888
第二台写 server.2=node2:2888:3888之后以此类推
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
配置完成后如下图
4.进入data目录,创建文件myid
cd data
vi myid
将文件中写入1
5.将zookeeper发送给其它节点
在此zookeeper位置为/home/hadoop下,将发送到node1,2,3的/home/hadoop/下,一定要注意权限问题,如果是root则忽略
scp -r /home/hadoop/zookeeper-3.4.10 root@node2:/home/hadoop/
scp -r /home/hadoop/zookeeper-3.4.10 root@node3:/home/hadoop/
chown -R hadoop:hadoop /home/hadoop/zookeeper-3.4.10 修改文件所属者和组
chmod -R 777 /home/hadoop/zookeeper-3.4.10 修改访问权限
6.修改每一台机器的myid
按照zoo.cfg中对应的数字修改,例如node2修改为2
vi myid
节点 | myid |
node1 | 1 |
node2 | 2 |
node3 | 3 |
7.进入bin目录下,开启zookeeper
使用命令zkServer.sh start依次开启每一台节点上的zookeeper
8.全部开启完毕后查看zookeeper状态
zkServer.sh status,其中有一台为领导者,其它为跟从者
跟从者:
领导者:
注意:开启之后需要等待一小会才能看到选举结果
9.使用jps指令查看进程
jps
其中,QuorumPeerMain即为zookeeper的进程
附zookeeper便捷启动脚本:
#!/bin/shell
echo "start zookeeper server..."
#hosts里是安装zookeeper的主机名
hosts="node1 node2 node3"
#用循环来分别执行zkServer.sh start的脚本
for host in $hosts
do
echo "$host"
ssh $host "source /etc/profile; /home/hadoop/zookeeper-3.4.10/bin/zkServer.sh start"
done
二、搭建分布式hbase
1.首先解压
tar -zxvf hbase-1.3.0-bin.tar.gz
2.进入hbase中的conf目录,配置hbase-env.sh
cd conf
vi habse-env.sh
修改jdk路径
使用外部的zookeeper,不使用hbase内置zookeeper,如果是单节点伪分布式集群的话可以省力使用内置zookeeper(推荐)
3.配置hbase-site.xml
在配置文件中配置的任何路径都不需要自己手动创建
vi hbase-site.xml
在configuration中添加配置
<configuration>
<!--hbase的根目录-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!--是否是分布式hbase-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--zookeeper所在的节点-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<!--hbase的zookeeper数据存放位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase-1.3.0/tmp/zk/data</value>
</property>
</configuration>
4.修改regionservers
此配置文件是配置副节点的,即写进的节点都为hbase的副节点
vi regionservers
将localhost删除,修改为附节点(注意一个节点占一行)
node1
node2
node3
5.将hbase发送到其它节点
同时也需要注意权限问题,如果不为root用户,则需要修改一下权限
scp -r /home/hadoop/hbase-1.3.0 root@node1:/home/hadoop/
scp -r /home/hadoop/hbase-1.3.0 root@node2:/home/hadoop/
scp -r /home/hadoop/hbase-1.3.0 root@node3:/home/hadoop/
6.在hbase主节点上开启hbase(需要先启动hadoop和zookeeper集群)
start-hbase.sh
7.使用jps指令查看进程
主节点:(HMaster进程)
副节点:(HRegionServer进程)
8.登录web端查看hbase状况
使用浏览器查看状态,输入master:16010,在RegionServers下可以看到有三个节点