今天来教大家如何搭建一个完全分布式的hbase集群:
1.环境确认:
由于hbase的数据是存储在hdfs集群上面,所以你需要搭建一个hdfs集群,而且我们需要使用zookeeper管理我们的hbase集群,所以我们的机器需要安装zookeeper集群。
如图:
hadoop集群:
本地环境是有三台机器:master,slave1,slave2,分别是是hdfs的namenode和datanode,其中QuorumPeerMain是zookeeper的java进程,确认上述环境没有问题之后就可以来安装我们的hbase集群了。
2.上传hbase安装包
注意,因为hbase是依赖于hadoop集群的,所以我们需要的hbase版本要和hadoop对应好,我本地的hadoop是2.7.3版本的(可以使用hadoop version查看版本)
按照官网 http://hbase.apache.org/book.html#java 查看版本对应的关系:
所以我下载的hbase版本是2.1.8版本的,上传到服务器
3. 解压
tar -zxvf hbase-2.1.8-bin.tar.gz
我的文件夹是/home/hbase,效果如图:
4.修改配置文件
进入/conf目录:
- 修改hbase-env.sh
需要修改的一个是jdk的安装位置,一个是使用外部的zk,可以使用echo $JAVA_HOME
查询jdk的安装位置
- 修改hbase-site.xml
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
- 修改regionservers
- 注意:还需要将hadoop的hdfs-site.xml和core-site.xml放在hbase/conf下面
我们先找到这个文件的位置:
路径是:/home/hadoop/hadoop-2.7.3/etc/hadoop
,然后我们复制这两个文件过去:
cp /home/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml ./
cp /home/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml ./
- 最后我们将这个配置好的hbase复制到其它的两个服务器上面:
scp -r hbase-2.1.8 slave1:/home/hbase/
scp -r hbase-2.1.8 slave2:/home/hbase/
4.启动hbase
在master节点上进入bin目录,使用
./start-hbase.sh
启动habse,这时候会报一些jar包冲突:
我们就需要去修改或者删除相同的jar,这里我的做法是将hbase里面的jar重命名:
cd lib/client-facing-thirdparty/
mv slf4j-log4j12-1.7.25.jar slfj-log4j12-1.7.25.jar.bak
最后使用bin目录下的关闭shell脚本关闭hbase,重启:
./stop-hbase.sh
./start-hbase.sh
启动成功!
由于我的版本是2.1.8,所以我的端口号是16010
http://master:16010/master-status