> Hbase 在大数据的体系中扮演着DB角色,不得不说是重要的一员,在上一篇,大猪 已经给大家演示了 [Hadoop 3.2 集群搭建](//www.greatytc.com/p/3182aaff918d) 了,本次我们将继续紧接着搭建Hbase集群。
由于我们安装是Hbase的集群版本,这里将会使用到独立的 Zookeeper。
Zookeeper 与 Hbase 使用的版本也将都是最新版本,坑嘛,自然由大猪来趟。
## 服务器一
下载 [zookeeper-3.4.14.tar.gz](http://apache.mirrors.ionfish.org/zookeeper/stable/zookeeper-3.4.14.tar.gz)
```
curl -O http://apache.mirrors.ionfish.org/zookeeper/stable/zookeeper-3.4.14.tar.gz
```
解压更名
```
tar -zxvf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14 zookeeper
```
配置PATH环境
```
echo -e 'export ZK_HOME=/soft/zookeeper \nexport PATH=$PATH:$ZK_HOME/bin' >> /etc/profile
# 立即生效
source /etc/profile
```
coo.cfg 配置
```
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/soft/zookeeper/data
dataLogDir=/soft/zookeeper/logs
clientPort=2181
server.1=m1.example.com:2888:3888
server.2=m2.example.com:2888:3888
```
创建目录
```
mkdir -p /soft/zookeeper/data
mkdir -p /soft/zookeeper/logs
```
配置zk的日志输出路径
```
# 在第二行添加下面语句到 bin/zkServer.sh 中
export ZOO_LOG_DIR=/soft/zookeeper/logs
```
创建zk id标识
```
echo 1 > /soft/zookeeper/data/myid
```
## 服务器二
复制zookeeper到服务器二soft目录上
```
scp -r zookeeper root@m2.example.com:/soft
```
创建zk id标识
```
echo 2 > /soft/zookeeper/data/myid
```
创建目录 => 同上
配置PATH环境 => 同上
## ZK启动
```
# 服务器一
zkServer.sh start
# 服务器二
zkServer.sh start
# 成功如下
[root@m1 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /soft/zookeeper/bin/../conf/zoo.cfg
Mode: follower 或 leader
```
## Hbase操作
下载 [hbase-2.1.4-bin.tar.gz](https://www.apache.org/dyn/closer.lua/hbase/2.1.4/hbase-2.1.4-bin.tar.gz)
```
curl -O https://www.apache.org/dyn/closer.lua/hbase/2.1.4/hbase-2.1.4-bin.tar.gz
```
解压更名
```
tar -zxvf hbase-2.1.4-bin.tar.gz
mv hbase-2.1.4 hbase
```
配置PATH环境
```
echo -e 'export export HBASE_HOME=/soft/hbase \nexport PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile
# 立即生效
source /etc/profile
```
hbase-site.xml 配置
```
<property>
<name>hbase.rootdir</name>
<value>hdfs://m1.example.com:9000/hbase</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.master</name>
<value>16010</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>m1.example.com,m2.example.com</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/soft/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
```
regionservers 添加
```
m1.example.com
m2.example.com
```
backup-masters 添加
```
m1.example.com
```
下载 [htrace-core-3.2.0-incubating.jar](http://central.maven.org/maven2/org/apache/htrace/htrace-core/3.2.0-incubating/htrace-core-3.2.0-incubating.jar) 到 hbase/lib 目录中
```
curl -O http://central.maven.org/maven2/org/apache/htrace/htrace-core/3.2.0-incubating/htrace-core-3.2.0-incubating.jar
```
bin/hbase-env.sh 添加
```
export JAVA_HOME=/soft/jdk1.8
export HBASE_MANAGES_ZK=false
```
复制hbase到另一台服务器上
```
scp -r hbase root@m2.example.com:/soft
```
另一台的环境配置跟上面一样
可以启动Hbase了
```
start-hbase.sh
```
尝试创建一张表
```
hbase shell
create 'logTable',{NAME => 'info',TTL => '3 DAYS',CONFIGURATION => {'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy','KeyPrefixRegionSplitPolicy.prefix_length'=>'2'}},SPLITS => ['20','80']
```
访问 [http://m1.example.com:16010](http://m1.example.com:16010/)
![](https://upload-images.jianshu.io/upload_images/9028759-62094374d52f5548.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 提示
如果日志中出现下面的错误
```
Master startup cannot progress, in holding-pattern until region onlined
```
则执行zkCli.sh删除meta信息,重启Hbase即可
```
zkCli.sh -server 127.0.0.1
rmr /hbase/meta-region-server
```
心明眼亮的你、从此刻开始。
![](https://upload-images.jianshu.io/upload_images/9028759-7586fee586f2075b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](https://upload-images.jianshu.io/upload_images/9028759-07315bb8dadcd082.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)