平台环境:Java1.8.0_144、Hadoop2.7.4、Zookeeper3.4.9
简介:HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。该技术较行式存储数据库而言优势在于:所有数据按列存取,因此只需在特定列做I/O即可完成查询与分析,效率节省90%;此外,列式数据库在每列上还有专门的列压缩算法进一步提高数据库性能,这是行式数据库不具备的。
一、软件准备:
(Hbase) https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
(Zookeeper) https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
下载完成后对上述两个软件进行解压:
[root@Clouder3 local]# tar zxvf hbase-1.3.1-bin.tar.gz
[root@Clouder3 local]# tar zxvf zookeeper-3.4.9.tar.gz
这里我使用的是外部的Zookeeper集群管理Hbase。
二、配制文件修改:
进入hbase配制文件存放目录对各配制文件进行修改,[root@Clouder3 local]# cd hbase-1.3.1/conf/
(1) 修改hbase-env.sh , [root@Clouder3 conf]# vim hbase-env.sh 添加如下配制:
export JAVA_HOME=/usr/java/jdk1.8.0_144/ (配制JAVA_HOME)
export HBASE_MANAGES_ZK=false (默认为true使用内部Zookeeper,由于我使用的外部ZK因此此处改为false)
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
参看配制项说明如下两行配制仅JDK7需要,JDK8+可以删除,在这里我将下面两行注释掉
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
(2) 修改hbase-site.xml , [root@Clouder3 conf]# vim hbase-site.xml 在configuration中添加如下配制:
(3) 修改regionservers , [root@Clouder3 conf]# vim regionservers 删除原文件里面的内容新增集群中节点名称:
Clouder1
Clouder2
Clouder3
(4) 修改hadoop-env.sh ,[root@Clouder3 conf]# vim /usr/local/hadoop-2.7.3/etc/hadoop/hadoop-env.sh 找到HADOOP_CLASSPATH将hbase lib路径添加到HADOOP_CLASSPATH中,防止运行hbase相关jar包报错:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hbase-1.3.1/lib/*
以上Hbase相关配制修改完成,分别将修改后的文件发送到其它节点:
[root@Clouder3 local]# scp -r hbase-1.3.1 Clouder1:/usr/local/
[root@Clouder3 local]# scp -r hbase-1.3.1 Clouder2:/usr/local/
(5) 外部Zookeeper集群配制(Zookeeper集群搭建时最好选用奇数台主机这样便于ZK选主):
修改zoo.cfg文件 , 将zoo_sample.cfg重命名为zoo.cfg(或者复制并命名为zoo.cfg):
[root@Clouder3 conf]# cp zoo_sample.cfg zoo.cfg
向zoo.cfg文件中添加配制信息:
server.0=192.168.1.19:2888:3888
server.1=192.168.1.20:2888:3888
server.2=192.168.1.21:2888:3888
dataDir=/usr/local/zookeeper-3.4.9/data (将默认路径替换为这个)
(6) 创建zookeeper dataDir目录:
该路径对应上述(5)中的配制路径,[root@Clouder3 zookeeper-3.4.9]# mkdir data
在创建的data目录中写入zookeeper的ID,[root@Clouder3 data]# vim myid
添加内容:2(该ID号码对应(5)中配制的Server号码)
将配制好的zookeeper发送至其它各节点:
[root@Clouder3 local]# scp -rzookeeper-3.4.9 Clouder1:/usr/local/
[root@Clouder3 local]# scp -rzookeeper-3.4.9 Clouder2:/usr/local/
注意:将配制好的zookeeper发送至其它节点的时候,必须到各节点修改一次myid文件,使当前节点的ID与zoo.cfg中配制的号码保持一致!!!
(7) zookeeper集群启动
进入到zookeeper安装目录,[root@clouder3 zookeeper-3.4.9]# bin/zkServer.sh start (zookeeper集群需要在各节点运行该命令单独启动,也可自行编写脚本一键启动)
查看zookeeper状态:
[root@clouder3 zookeeper-3.4.9]# bin/zkServer.sh status (zookeeper查看运行状态命令)
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower (代表从节点)
[root@Clouder1 ~]# /usr/local/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader (代表主节点)
[root@clouder2 zookeeper-3.4.9]# bin/zkServer.sh status (zookeeper查看运行状态命令)
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower (代表从节点)
(8) 修改系统环境变量
[root@clouder3 ~]# vim /etc/profile
配制hbase环境变量
export HBASE_HOME=/usr/local/hbase-1.3.1
export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PATH
使配制生效:
source /etc/profile
分别在其它各节点进行/etc/profile修改并使配制生效(source /etc/profile)
(9) 启动Hbase集群及验证:
[root@Clouder2 ~]# jps
851 QuorumPeerMain
1555 HRegionServer
5508 DataNode
5612 NodeManager
22462 Jps
[root@Clouder1 ~]# jps
2881 DataNode
30834 QuorumPeerMain
2986 NodeManager
31594 HRegionServer
28814 Jps
注:启动Hbase集群前一定要确保Hadoop集群和Zookeeper集群已经启动