学科分类

HBase的集群部署

HBase中存储在HDFS中的数据是通过Zookeeper协调处理的。由于HBase存在单点故障的问题,因此,可以通过Zookeeper部署一个高可用的HBase集群解决。下面,以三台服务器为例(hadoop01、hadoop02和hadoop03),讲解如何安装部署HBase集群。HBase集群的规划方式如图1所示。

img

​ 图1 HBase集群规划

在图1中,HBase集群中的hadoop01和hadoop02是主节点,hadoop02和hadoop03是从节点。这里之所以将hadoop02既部署为主节点也部署为从节点,其目的是为了避免HBase集群主节点宕机导致单点故障问题。

接下来,分步骤讲解如何部署HBase集群,具体步骤如下:

(1) 安装JDK、Hadoop以及Zookeeper,这里我们设置的JDK版本是1.8、Hadoop版本是2.7.4以及Zookeeper的版本是3.4.10。

(2) 下载HBase安装包。官网下载地址:http://archive.apache.org/dist/hbase/。这里,我们选择下载的版本是1.2.1。

(3) 上传并解压HBase安装包。将HBase安装包上传至Linux系统的/export/software/目录下,然后解压到/export/servers/目录。解压安装包的具体命令如下:

$ tar -zxvf hbase-1.2.1-bin.tar.gz -C /export/servers/

(4) 将/hadoop-2.7.4/etc/hadoop目录下的hdfs-site.xml和core-site.xml配置文件复制一份到/hbase-1.2.1/conf目录下,复制文件的具体命令如下:

$ cp /export/servers/hadoop-2.7.4/etc/hadoop/{hdfs-site.xml,core-site.xm} /export/servers/hbase-1.2.1/conf

(5) 进入/hbase-1.2.1/conf目录修改相关配置文件。打开hbase-env.sh配置文件,指定jdk的环境变量并配置Zookeeper(默认是使用内置的Zookeeper服务),修改后的hbase-env.sh文件内容具体如下:

# The java implementation to use. Java 1.7+ required.
\# 配置jdk环境变量
**export JAVA_HOME=/export/servers/jdk**
\# Tell HBase whether it should manage it's own instance of Zookeeper or not.
\# 配置hbase使用外部Zookeeper
**export HBASE_MANAGES_ZK=false

打开hbase-site.xml配置文件,指定HBase在HDFS的存储路径、HBase的分布式存储方式以及Zookeeper地址,修改后的hbase-site.xml文件内容具体如下:

<configuration><!-- 指定hbase在HDFS上存储的路径 --><property><name>hbase.rootdir</name><value>hdfs://hadoop01:9000/hbase</value></property><!-- 指定hbase是分布式的 --><property><name>hbase.cluster.distributed</name><value>true</value></property><!-- 指定zk的地址,多个用“,”分割 --><property><name>hbase.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property>
</configuration>

修改regionservers配置文件,配置HBase的从节点角色(即hadoop02和hadoop03)。具体内容如下:

hadoop02
hadoop03

修改ackup-masters配置文件,为防止单点故障配置备用的主节点角色,具体内容如下:

hadoop02

修改profile配置文件,通过“vi /etc/profile”命令进入系统环境变量配置文件,配置HBase的环境变量(服务器hadoop01、hadoop02和hadoop03都需要配置),具体内容如下:

export HBASE_HOME=/export/servers/hbase-1.2.1
export PATH=$PATH:$HBASE_HOME/bin:

将HBase的安装目录分发至hadoop02、hadoop03服务器上。具体命令如下:

$ scp –r /export/servers/hbase-1.2.1/ hadoop02:/export/servers/
$ scp –r /export/servers/hbase-1.2.1/ hadoop03:/export/servers/

在服务器hadoop01、hadoop02和hadoop03上分别执行“source /etc/profile”命令,使系统环境配置文件生效。

(6) 启动Zookeeper和HDFS,具体命令如下:

# 启动zookeeper
$ zkServer.sh start
\# 启动hdfs
$ start-dfs.sh

(7) 启动HBase集群,具体命令如下:

$ start-hbase.sh

这里需要注意的是,在启动HBase集群之前,必须要保证集群中各个节点的时间是同步的,若不同步会抛出ClockOutOfSyncException异常,导致从节点无法启动。因此需要在集群各个节点中执行如下命令来保证时间同步。

$ ntpdate -u cn.pool.ntp.org

(8) 通过“jps”命令检查HBase集群服务部署是否成功,如图2所示。

img

​ 图2 查看HBase集群中的进程

从图2可以看出,服务器hadoop01上出现了HMaster进程,服务器hadoop02上出现了HMaster和HRegionServer进程,服务器hadoop03上出现了HRegionServer进程,证明HBase集群安装部署成功。若需要停止HBase集群,则执行“stop-hbase.sh”命令。

下面,通过浏览器访问[http://hadoop01:16010,查看HBase集群状态,如图3所示。

img

​ 图3 HBase集群状态

从图3可以看出,服务器hadoop01是HBase的主节点,服务器hadoop02和hadoop03是从节点。下面,通过访问http://hadoop02:16010来查看集群备用主节点的状态,如图4所示。

img

​ 图4 HBase集群备用节点的状态

从图4可以看出,服务器hadoop02是HBase集群的备用主节点,并且可以从Active Master看出主节点在正常工作。

点击此处
隐藏目录