HBase(Hadoop3.1.2 HBase2.2.4) 伪分布式安装与配置


HBase的安装方式有单机模式、伪分布式、完全分布式。在此,我使用伪分布式。
HBase的安装和使用,可以参考 Apache HBase ™ Reference Guide


使用伪分布式安装之前,你应该已经安装了:


接下来就开始安装Hbase,我使用的是:

  • Centos6.8
  • Hadoop3.1.2
  • Hbase2.2.4

安装HBase

在安装之前,请确保 Hadoop 和 HBase 的版本对应关系:
在这里插入图片描述
在这里插入图片描述

详情请见 Basic Prerequisites

直接下载的话,速度可能很慢,可以使用国内的镜像,这里给出两个作参考:

  1. http://mirrors.ustc.edu.cn/
  2. https://mirrors.tuna.tsinghua.edu.cn/apache

以上的版本可能不全,要使用其它国内镜像,请百度 Apache 国内镜像

下载完成之后解压即可,接下来就配置HBase。

配置Hbase

  • 配置HBase环境变量
    执行 vi /etc/profile,然后配置HBASE_HOME 和 PATH:
JAVA_HOME=/myfile/jdk1.8.0_231
HADOOP_HOME=/myfile/hadoop-3.1.2
HBASE_HOME=/myfile/hbase-2.2.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin

保存后执行 source /etc/profile 来刷新配置。

  • 修改 $HBASE_HOME/conf/ 目录下的 hbase-env.sh
    添加 JAVA_HOME,文件中自带了,只需要取消注释即可。
export JAVA_HOME=/myfile/jdk1.8.0_231

另外,看到网上很多人还在该文件配置了如下信息:

export HBASE_MANAGES_ZK=true

但是,官网给出的配置中并没有,所以我也没配(最后也能启动HBase)。

  • 修改 $HBASE_HOME/conf/ 目录下的 hbase-site.xml
<configuration>
	<property>
        <name>hbase.rootdir</name>
        <!-- value 的 URL 地址请与hadoop配置文件core-site.xml
        中的 fs.default.name 保持一致,然后再加上 /hbase。
        此处建议用主机名(不建议直接填写 IP 地址,否则可能出错)-->
        <value>hdfs://hmaster:9000/hbase</value>
    </property>
	<property>
  		<name>hbase.cluster.distributed</name>
  		<value>true</value>
	</property>
	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>
</configuration>

到此,配置完成,简单的两步就搞定了。

测试

先执行 start-all.sh 启动Hadoop,使用 jps 查看线程,看Hadoop是否正常启动
在这里插入图片描述
然后执行 start-hbase.sh 启动hbase,使用 jps 查看线程,会发现多了3个进程 HMaster、HRegionServer 和 HQuorumPeer。
在这里插入图片描述
然后访问 16010 端口(HBase 1.0 之后,60010端口被修改为16010),能够成功访问的话,说明配置成功
在这里插入图片描述
如果启动过程中没有报错,且第一次使用 jps 后,进程存在,但是访问不了16010端口,那么,请再次使用 jps 查看进程,看是否有进程被关闭了,因为在某些情况下,HMaster进程会自动关闭,解决方式请见下面。

错误解决

  • 启动HBase时,发现 jar 包冲突
Class path contains multiple SLF4J bindings. SLF4J: 
Found binding in 
[jar:file:/myfile/hadoop-3.1.2/share/hadoop/common/lib/slf4j-log4j12-
1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: 
Found binding in 
[jar:file:/myfile/hbase-2.2.4/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: 
See 
http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

意思就是说,在我的 /myfile/hadoop-3.1.2/share/hadoop/common/lib/ 和 /myfile/hbase-2.2.4/lib/client-facing-thirdparty/ 两个地方都发现了 slf4j-log4j12-1.7.25.jar ,jar 冲突了,解决办法就是删除其中的一个jar(根据错误提示的路径去删除即可)。

  • HMaster启动后不久被自动关闭
    查看日志(位置在 $HBASE_HOME/log/hbase-root-hmaster-xxx.log)可以发现如下内容:
ERROR [master/hmaster:16000:becomeActiveMaster] master.HMaster: Failed to become active master
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.

解决办法如下:
先执行 stop-hbase.sh 关闭HBase(Hadoop可以不用关闭),可能出现使用 stop-hbase.sh命令之后HRegionServer 进程依然存在,其实没影响,可以不用在意。然后在 $HBASE_HOME/conf/hbase-site.xml 中添加:

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

其实在上面的配置中我已经添加了,这里只是来说一下这个问题。


如果进行了上面的配置还是无法配置成功,那么,可以尝试重新格式化Hadoop,即执行 hdfs namenode -format,前提是要先删除Hadoop安装目录下的logs、hdfs和tmp等多余(就是与原来刚解压后的文件进行对比,删除所有的多余的文件或文件夹)的文件夹(如果有的话),然后再重新启动。


如果经过上面的配置,能够成功访问16010端口,那么,HBase 伪分布式就已经配置成功。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值