使用伪分布式安装之前,你应该已经安装了:
接下来就开始安装Hbase,我使用的是:
在安装之前,请确保 Hadoop 和 HBase 的版本对应关系:
详情请见 Basic Prerequisites
直接下载的话,速度可能很慢,可以使用国内的镜像,这里给出两个作参考:
- http://mirrors.ustc.edu.cn/
- https://mirrors.tuna.tsinghua.edu.cn/apache
以上的版本可能不全,要使用其它国内镜像,请百度 Apache 国内镜像
下载完成之后解压即可,接下来就配置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
来刷新配置。
export JAVA_HOME=/myfile/jdk1.8.0_231
另外,看到网上很多人还在该文件配置了如下信息:
export HBASE_MANAGES_ZK=true
但是,官网给出的配置中并没有,所以我也没配(最后也能启动HBase)。
<configuration>
<property>
<name>hbase.rootdirname>
<value>hdfs://hmaster:9000/hbasevalue>
property>
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
<property>
<name>hbase.unsafe.stream.capability.enforcename>
<value>falsevalue>
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进程会自动关闭,解决方式请见下面。
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(根据错误提示的路径去删除即可)。
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.enforcename>
<value>falsevalue>
property>
其实在上面的配置中我已经添加了,这里只是来说一下这个问题。
如果进行了上面的配置还是无法配置成功,那么,可以尝试重新格式化Hadoop,即执行 hdfs namenode -format
,前提是要先删除Hadoop安装目录下的logs、hdfs和tmp等多余(就是与原来刚解压后的文件进行对比,删除所有的多余的文件或文件夹)的文件夹(如果有的话),然后再重新启动。