0%

HBase集群搭建

前提条件

  1. Zookeeper已安装并启动
  2. HDFS已启动(YARN可不启动)

版本说明

  • 操作系统: CentOS 7
  • Hadoop版本: Hadoop 3.2.1
  • Zookeeper版本: Zookeeper3.4.14
  • HBase版本: hbase-2.3.0

下载、解压

下载HBase安装包hbase-2.3.0-bin.tar.gz并上传至服务器

注意选择与Hadoop对应的Hbase版本,具体可参考:http://hbase.apache.org/book.html#hadoop

1
2
3
tar -zxvf hbase-2.3.0-bin.tar.gz
# 集群所有全部解压可使用pdsh -a
pdsh -a tar -zxvf /opt/hbase-2.3.0-bin.tar.gz -C /opt

配置文件

配置hbase-env.sh

末尾添加以下内容:

1
2
export JAVA_HOME=/usr/local/jdk1.8.0_231
export HBASE_MANAGES_ZK=false

复制配置文件到其他集群

1
pdcp -a hbase-env.sh /opt/hbase-2.3.0/conf/

配置/etc/profile

编辑,vim /etc/profile,添加以下内容:

1
2
3
4
# hbase environment
export HBASE_HOME=/opt/hbase-2.3.0/
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$HBASE_HOME/sbin

复制配置文件到其他集群

1
pdcp -a /etc/profile /etc

使配置生效

1
2
3
source /etc/profile
#
pdsh -a source /etc/profile

验证

1
2
echo $HBASE_HOME
pdsh -a echo $HBASE_HOME

配置hbase-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
<name>hbase.rootdir</name>
<!-- hadoop引入JQM负载均衡时,这里配置dfs.nameservices指定的集群逻辑名称 -->
<value>hdfs://mycluster/hbase</value>
<!-- 指定Hadoop master服务器的写法,hbase监听hdfs默认的端口是9000,这里的配置端口只能写9000 -->
<!--<value>hdfs://hadoop.master01:9820/hbase</value>-->
</property>
<!-- 开启集群模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<!-- 解决启动HMaster无法初始化WAL的问题 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<!-- 指定HBase Master web页面访问端口,默认端口号16010 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!-- 指定HBase RegionServer web页面访问端口,默认端口号16030 -->
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
<!-- 指定zookeeper集群,有多个用英文逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>

复制配置文件到其他集群

1
pdcp -a /opt/hbase-2.3.0/conf/hbase-site.xml /opt/hbase-2.3.0/conf/

配置regionservers

1
2
3
master
slave1
slave2

复制配置文件到其他集群

1
pdcp -a /opt/hbase-2.3.0/conf/regionservers /opt/hbase-2.3.0/conf/

复制HDFS配置文件

1
2
3
4
5
cp /opt/hadoop-3.2.1/etc/hadoop/core-site.xml /opt/hbase-2.3.0/conf/core-site.xml
cp /opt/hadoop-3.2.1/etc/hadoop/hdfs-site.xml /opt/hbase-2.3.0/conf/hdfs-site.xml
# 或者
pdcp -a /opt/hadoop-3.2.1/etc/hadoop/core-site.xml /opt/hbase-2.3.0/conf/core-site.xml
pdcp -a /opt/hadoop-3.2.1/etc/hadoop/hdfs-site.xml /opt/hbase-2.3.0/conf/hdfs-site.xml

配置HMaster高可用

在conf目录下创建backup-masters文件,添加以下内容(代表master、slave1两个节点启动HMaster):

1
2
master
slave1

复制配置文件到其他集群

1
pdcp -a /opt/hbase-2.3.0/conf/backup-masters /opt/hbase-2.3.0/conf/backup-masters

启动

1
bin/start-hbase.sh

然后三台服务器分别执行jps,查看进程

从上面可以看出,HMaster和HRegionServer正好与backup-masters和regionservers对应

查看HMasterWeb的Web页面

从上面可以看出,当前hmaster的主节点(active)在master节点上

查看HRegionServer的Web页面

验证高可用

上面看到HMaster在master节点上,所以在master节点上执行:

1
kill -9 32803

从上面可以看出,杀掉master节点上的hmaster之后,slave1节点上的hmaster变成了主节点

重启master节点上的hmaster节点bin/hbase-daemon.sh start master

从上面可以看出,master节点上的hmaster重启后,变成了从节点

启动/关闭

启动/关闭集群

1
2
bin/start-hbase.sh
bin/stop-hbase.sh

启动/关闭单点

1
2
3
4
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh stop master
bin/hbase-daemon.sh start regionserver
bin/hbase-daemon.sh stop regionserver
坚持原创技术分享,您的支持将鼓励我继续创作!