更新时间:2021-06-17 来源:黑马程序员 浏览量:
HBase中存储在HDFS中的数据是通过Zookeeper协调处理的。由于HBase存在单点故障的问题,因此,可以通过Zookeeper部署一个高可用的HBase集群解决。下面,以三台服务器为例(hadoop01、hadoop02和hadoop03),讲解如何安装部署HBase集群。HBase集群的规划方式如图1所示。
图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所示。
图2 查看HBase集群中的进程
从图2可以看出,服务器hadoop01上出现了HMaster进程,服务器hadoop02上出现了HMaster和HRegionServer进程,服务器hadoop03上出现了HRegionServer进程,证明HBase集群安装部署成功。若需要停止HBase集群,则执行“stop-hbase.sh”命令。
下面,通过浏览器访问[http://hadoop01:16010,查看HBase集群状态,如图3所示。
图3 HBase集群状态
从图3可以看出,服务器hadoop01是HBase的主节点,服务器hadoop02和hadoop03是从节点。下面,通过访问http://hadoop02:16010来查看集群备用主节点的状态,如图4所示。
图4 HBase集群备用节点的状态
从图4可以看出,服务器hadoop02是HBase集群的备用主节点,并且可以从Active Master看出主节点在正常工作。
HBase中常见的Shell命令有哪几个?具体是怎样操作的?
黑马程序员Python+大数据开发课程