HBase的数据存储在Hadoop上,而ZooKeeper负责HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理等,所以安装HBase首先需要安装Hadoop和ZooKeeper。
我们本次使用的是CentOS7、Hadoop3.3.1、ZooKeeper3.4.6、HBase2.4.8(Hbase3正式版尚未发布,2.4.8是目前2021年最新版)
本次规划如下面所示的三个结点,为了节省资源,在三个节点上安装Hadoop和ZooKeeper以及HBase,其中hp301为主结点。
主机名 | IP地址 |
---|---|
hp301 | 192.168.150.31 |
hp302 | 192.168.150.32 |
hp303 | 192.168.150.33 |
其中安装Hadoop请参见本博客专门文章:
Hadoop3.3.1详细教程
其中安装Zookeeper请参见本博客专门文章:
ZooKeeper3.4.6分布式环境搭建
以下是安装Hbase步骤:
1,下载HBase2.4.8上传到服务器hp301的/apps目录下
2, 解压HBase到 /usr/local
tar -zxvf /apps/hbase-2.4.8-bin.tar.gz -C /usr/local
3,为Hbase创建软连接
ln -s /usr/local/hbase-2.4.8 /usr/local/hbase2
4,配置环境变量
vi/etc/profile.d/hbase.sh
export HBASE_HOME=/usr/local/hbase2
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile.d/hbase.sh
5,修改配置文件:
HBase的配置文件都在这个文件夹下:
/usr/local/hbase-2.4.8/conf
hbase-env.sh:
打开源文件中的以下两条注释,并替换值:
#配置Java环境变量
export JAVA_HOME=${
JAVA_HOME}
#关闭hbase自带的zookeeper
export HBASE_MANAGES_ZK=false
hbase-site.xml:
<configuration>
<!-- 此目录regionserver共享的目录,用来持久存储HBase的数据,其默认值为:${hbase.tmp.dir}/hbase,如果不修改默认值,数据将会在集群重启时丢失。 -->
<property>
<name>hbase.rootdir</name>
<!-- 设置Hadoop master-->
<value>hdfs://hp301:9000/hbase</value>
</property>
<!-- 设置hbase集群为分布式集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 设置zookeeper集群,用英文逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hp301:2181,hp302:2181,hp303:2181</value>
</property>
<!-- hbase备份的副本数,不能超过datanode的节点数。
hbase的数据备份数需要再hbase-site.xml配置文件中单独设置,否则hbase写入的数据regionServer只会保存一份! -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- Zookeeper元数据的存储目录,需要和Zookeeper的zoo.cfg 配置的一致 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/zk_data/data</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>
<!-- 解决启动HMaster无法初始化WAL的问题 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
</configuration>
打开regionservers文件,配置regionserver所在的主机:
hp302
hp303
6,将hp301配置好的远程复制到hp302、hp303
将/usr/local/hbase-2.4.8远程复制到hp302、hp303
将/etc/profile.d/hbase.sh远程复制到hp302、hp303
分别在hp302、hp303中建立hbase2的软连接,并使hbase的环境变量生效
7,测试
启动Hadoop集群,并分别在三台机子上启动ZooKeeper
启动HBase集群
start-hbasse.sh
在hp301上查看jps:
在hp302上查看、在hp303 上查看,效果一致:
通过hbase提供的hbase-webapp可以通过浏览器访问看到web UI
8,关闭集群:
stop-hbase.sh
如果无法正常关闭,可以尝试分别关闭Master、RegionServer,命令如下:
hbase-daemons.sh stop master
hbase-daemons.sh stop regionserver
关闭ZooKeeper、关闭Hadoop。