Hbase集群搭建超详细教程

5,542 阅读3分钟

大家好,我是风云,欢迎大家关注我的博客,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己!

前言

HBase 是一个开源的、分布式的、版本化的非关系型数据库,它利用Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储。存储结构化和半结构化的数据,可以进行随机访问的存取和检索数据。 HBase 是非关系型数据库,它不具备关系型数据库的一些特点,例如,它不支持 SQL 的跨行事务,也不要求数据之间有严格的关系,同时它允许在同一列的不同行中存储不同类型的数据。 HBase 作为 Hadoop 框架下的数据库,是被设计成在一个服务器集群上运行的。 今天就来分享一下HBase 集群搭建的详细过程。

详细步骤

前期准备:

  1. 准备三个虚拟机: 192.168.36.121 hadoop1 192.168.36.122 hadoop2 192.168.36.123 hadoop3
  2. 虚拟机上配置有ssh服务,可以进行免密登录
  3. 安装JDK
  4. 安装Hadoop集群并启动HDFS服务
  5. 安装zookeeper集群并启动

1、下载安装包

cd /opt/module
# 下载hbase安装包
wget https://archive.apache.org/dist/hbase/2.2.4/hbase-2.2.4-bin.tar.gz

2、解压

# 解压
tar -zxvf ./hbase-2.2.4-bin.tar.gz
mv hbase-2.2.4 hbase

3、修改配置文件

3.1 修改hbase-env.sh文件

cd /opt/module/hbase/conf
# 打开文件
vim hbase-env.sh
# 添加如下内容
export HBASE_MANAGES_ZK=false

3.2 修改hbase-site.xml

vim hbase-site.xml
# 修改为如下内容
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop1:8020/hbase</value>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop1,hadoop2,hadoop3</value>
    </property>
</configuration>

3.3 修改regionservers文件

# 修改为如下内容
hadoop1
hadoop2
hadoop3

4、分发hbase目录

# 将hbase目录同步到集群其他节点
scp -r /opt/module/hbase hadoop2:/opt/module
scp -r /opt/module/hbase hadoop3:/opt/module

5、启动HBase集群

注意: 只有当Hadoop退出安全模式时,当查看http://hadoop1:9870/ 页面中出现 Security is off Safemode is off.时 我们再启动Hbase集群!!!

# 启动集群
cd /opt/module/hbase
bin/start-hbase.sh

6、查看HBase Web UI

我们可以通过Web UI 方式来访问HBase管理页面,连接地址:http://hadoop1:16010 ,这里的hadoop1要修改为你自己的IP地址或者主机名!!!能够成功访问,说明HBase集群启动成功。

在搭建过程中可能会遇到的问题:

问题:java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of ‘hbase.procedure.store.wal.use.hsync’ to set the desired level of robustness and ensure the config value of ‘hbase.wal.dir’ points to a FileSystem mount that can provide it.

解决办法: 1.在hbase-site.xml增加配置

<property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
</property>

2.将该文件同步到其他节点

scp -r /opt/module/hbase/conf/hbase-site.xml hadoop2:/opt/module/hbase/conf
scp -r /opt/module/hbase/conf/hbase-site.xml hadoop3:/opt/module/hbase/conf

3.重启HBase集群

# 停止集群
/opt/module/hbase/bin/stop-hbase.sh
# 启动集群
/opt/module/hbase/bin/start-hbase.sh

最后,附上整个hbase-site.xml的配置内容:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop1:8020/hbase</value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  
 <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop1,hadoop2,hadoop3</value>
  </property>
  
<!-- 解决启动HMaster无法初始化WAL的问题 -->
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  
    <!-- Phoenix 支持HBase 命名空间映射 -->
  <property>
    <name>phoenix.schema.isNamespaceMappingEnabled</name>
    <value>true</value>
  </property>

  <property>
   <name>phoenix.schema.mapSystemTablesToNamespace</name>
    <value>true</value>
  </property>
</configuration>

好了,HBase集群的搭建过程就顺利完成了!

希望大家都能有所收获,喜欢的可以点赞和收藏,有疑问的可以在评论区留言,也欢迎转发分享给更多的人!

谢谢大家!

-------------- end ----------------

微信公众号:请扫描下面的二维码进行关注!