04 配置HBase伪分布式环境

如果使用Hadoop3.1.x,建议配合Hbase2使用,如HBase2.2.3。

Hadoop version support matrix

  • √ = Tested to be fully-functional
  • ! = Known to not be fully-functional, or there are CVEs so we drop the support in newer minor releases
  • x = Not tested, may/may-not function
HBase-1.4.x HBase-1.6.x HBase-1.7.x HBase-2.2.x HBase-2.3.x
Hadoop-2.7.0 x x x x x
Hadoop-2.7.1+ x x x x
Hadoop-2.8.[0-2] x x x x x
Hadoop-2.8.[3-4] ! x x x x
Hadoop-2.8.5+ ! x x
Hadoop-2.9.[0-1] x x x x x
Hadoop-2.9.2+ ! x x
Hadoop-2.10.x ! !
Hadoop-3.1.0 x x x x x
Hadoop-3.1.1+ x x x
Hadoop-3.2.x x x x

1、解压

2、环境变量

最后使用source命令使配置生效

3、配置

拷贝hadoop的hdfs-site.xml和core-site.xml软链接到hbase的conf目录下面

修改hbase的conf/hbase-env.sh

  • 首先,需要修改JAVA_HOME为真实JDK路径

  • Configure PermSize.下面的2条export语句只是针对JDK7的优化,如果不用JDK7则可以删除或者注释掉

  • 默认情况,由HBase自行管理内置在其内的Zookeeper服务

    • 如果想要使用外部Zookeeper集群来进行管理,需要设置

修改hbase的核心配置文件conf/hbase-site.xml

  • hbase.rootdir是hbase存储在HDFS上的数据的根目录,里面存储着所有region的数据

  • 无论是伪分布式还是全分布式,hbase.cluster.distributed都需要设置true

    • 如果设成false,则hbase和zookeeper会在一个JVM进程里运行
  • hbase.zookeeper.quorum的主机名默认是localhost,应改为zookeeper集群中所有机器的主机名,多个主机名之间使用逗号分隔

  • zookeeper的端口默认都是2181,如果不是可以添加

问题:

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.

解决:

  • 在hbase-site.xml增加配置

4、测试

首先启动hadoop的dfs相关进程

等半分钟后启动Hbase

使用hbase shell测试

界面

hbase的Master管理界面地址: http://hadoop100:16010

image-20210110012902737

hbase的RegionServer管理界面地址: http://hadoop100:16301

image-20210110013140999

常见问题

注意:如果启动HBase Shell时遇到警告:

原因是hadoop和hbase的jar包冲突了,解决办法,将hbase/lib下面的相同slf4j-log4j12的jar包改名即可

Views: 28