写在最前,本次环境搭建是在Hadoop2.6.1,三节点的基础上完成的。

(关于搭建Hadoop环境,可参考:)

说明:

#master,表示在master节点上操作;

#master,#slave1,#slave2,表示在三个节点上都要操作;

还有一点需要注意的是,本篇文章介绍的是Hadoop+Zookeeper+HBase,对于HBase,是自带有Zookeeper,但不使用其自带的。另外,必须得将zookeeper和hbase的安装放在一起介绍,因为这两者在启动和关闭是有次序之分。

一、准备工作

        到官网下载:zookeeper-3.4.11.tar.gzhbase-1.3.3-bin.tar.gz

        然后将这两个安装包mv到虚拟机指定的目录下,这里博主是放到了/usr/local/src/

二、正式搭建环境

1、zookeeper:

1.1 解压安装包:

#master

tar -zxvf  zookeeper-3.4.11.tar.gz

1.2 修改zookeeper配置

#master

当前目录为/usr/local/src/

cd ./zookeeper-3.4.11/

1.3 创建日志文件和数据文件夹:

mkdir data
mkdir log

修改配置:

cd conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

添加以下信息:

dataDir=/usr/local/src/zookeeper-3.4.11/data
dataLogDir=/usr/local/src/zookeeper-3.4.11/log
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

zookeeper 和hbase怎么连接的 hbase与zookeeper_vim

1.4 配置环境变量

#Master、#Slave1、#Slave2

vim ~/.bashrc
export ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.11
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME
/bin

#刷新环境变量

source ~/.bashrc

1.5 远程分发zookeeper文件夹数据

#master

scp -r /usr/local/src/zookeeper-3.4.11 root@slave1:/usr/local/src/zookeeper-3.4.11
scp -r /usr/local/src/zookeeper-3.4.11 root@slave2:/usr/local/src/zookeeper-3.4.11

1.6 添加ID:

#Master

echo "1" > /usr/local/src/zookeeper-3.4.11/data/myid

#Slave1

echo "2" > /usr/local/src/zookeeper-3.4.11/data/myid

#Slave2

echo "3" > /usr/local/src/zookeeper-3.4.11/data/myid

1.5 启动Zookeeper服务

#Master、#Slave1、#Slave2

zkServer.sh start

验证结果:

zkServer.sh status

zookeeper 和hbase怎么连接的 hbase与zookeeper_vim_02

zookeeper 和hbase怎么连接的 hbase与zookeeper_JAVA_03

zookeeper 和hbase怎么连接的 hbase与zookeeper_vim_04

        zookeeper是采用随机选举的方式决定哪一台机器是leader,所以这里并不能保证master机器就是被选举成为zookeeper的leader节点。

1.6 关闭集群

#master、Slave1、Slave2

zkServer.sh stop

2、HBase:

2.1 解压压缩包

#master

当前目录是/usr/local/src/

tar -zxvf hbase-1.3.3-bin.tar.gz

2.2 创建文件夹:在hbase目录中

cd ./hbase-1.3.3/

mkdir logs

mkdir zookeeper

mkdir -p var/hbase

2.3 修改HBase的配置

2.3.1 修改regionservers内容:

cd hbase-1.3.3/conf
vim regionservers

添加内容(将原有内容清空):

master
slave1
slave2

2.3.2 修改hbase-env.sh 内容:

vim hbase-env.sh

添加内容:

export JAVA_HOME=/usr/local/src/jdk1.8.0_201
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib #注意,这里符号是.:

export HBASE_MANAGES_ZK=false

export HBASE_LOG_DIR=${HBASE_HOME}/logs

HBASE_MANAGES_ZK=false 时使用独立的,为true时使用默认自带的。

export HBASE_LOG_DIR是设置log文件存储的地方,可以直接添加此项,也可以在hbase-env.sh 里面找到这一项,将其前面的#去掉。

2.3.3 修改hbase-site.xml内容

vim hbase-site.xml
<configuration>
        <property>
                <name>hbase.tmp.dir</name>
                <value>/var/hbase</value>
        </property>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master,slave1,slave2</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/usr/local/src/hbase-1.3.3/zookeeper</value>
        </property>
        <property>
                <name>hbase.master.info.port</name>
                <value>60010</value>
        </property> 
</configuration>

2.4 配置环境变量

#Master、#Slave1、#Slave2

vim ~/.bashrc
export HBASE_HOME=/usr/local/src/hbase-1.3.3
export HBASE_CLASSPATH=$HBASE_HOME/conf
export HBASE_LOG_DIR=$HABSE_HOME/logs

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME
/bin

刷新环境变量:

source ~/.bashrc

2.5 远程分发hbase文件

scp -r /usr/local/src/hbase-1.3.3/ root@slave1:/usr/local/src/
scp -r /usr/local/src/hbase-1.3.3/ root@slave2:/usr/local/src/

2.6 启动集群

        这里必须注意了,启动HBase并不是简单的只启动HBase,因为上面已经配置了禁止使用自带zookeeper,这意味着需要启动刚才安装的zookeeper集群,然而还需要hadoop集群。因此:

启动顺序:hadoop-->zookeeper-->hbase

关闭顺序:hbase-->zookeeper-->hadoop

如果不按顺序开启集群,最常见的异常就是hbase的Hmaster节点启动没几秒就掉了;如果不按顺序关闭,hbase会出现关闭异常,类似下图提示:

zookeeper 和hbase怎么连接的 hbase与zookeeper_vim_05

hbase的启动方式是:

#master

start-hbase.sh

验证:

zookeeper 和hbase怎么连接的 hbase与zookeeper_zookeeper_06

zookeeper 和hbase怎么连接的 hbase与zookeeper_JAVA_07

zookeeper 和hbase怎么连接的 hbase与zookeeper_vim_08

登录master:60010/master-status查看HBase状态:

zookeeper 和hbase怎么连接的 hbase与zookeeper_zookeeper_09