写在最前,本次环境搭建是在Hadoop2.6.1,三节点的基础上完成的。
(关于搭建Hadoop环境,可参考:)
说明:
#master,表示在master节点上操作;
#master,#slave1,#slave2,表示在三个节点上都要操作;
还有一点需要注意的是,本篇文章介绍的是Hadoop+Zookeeper+HBase,对于HBase,是自带有Zookeeper,但不使用其自带的。另外,必须得将zookeeper和hbase的安装放在一起介绍,因为这两者在启动和关闭是有次序之分。
一、准备工作
到官网下载:zookeeper-3.4.11.tar.gz、hbase-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
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是采用随机选举的方式决定哪一台机器是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会出现关闭异常,类似下图提示:
hbase的启动方式是:
#master
start-hbase.sh
验证:
登录master:60010/master-status查看HBase状态: