概述

在使用 HBase 时,可能会遇到启动 HBase Shell 并尝试列出表时出现 ServerNotRunningYetException 的错误。本文将介绍如何通过修改配置文件来解决这个问题,确保 HBase 2.4.3 与 Hadoop 3.3.0 的兼容性。

问题描述

当启动 HBase Shell 并输入 list 命令时,可能会遇到以下错误:

ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
        at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2731)
        at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:1205)
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:395)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)

这个错误表明 HBase 服务尚未启动,尽管 Hadoop 和 HBase 的版本理论上应该是兼容的。根据官方文档,Hadoop 3.3.X 应该与 HBase 2.4.x 兼容。然而,有些资料和社区讨论指出可能存在版本不兼容的问题。

解决方案

经过实践发现通过修改 HBase 的配置文件 hbase-site.xml 可以解决这个问题。以下是具体的步骤:

1. 停止 HBase 集群

在进行任何配置更改之前,确保你的 HBase 集群已经完全停止。这可以通过运行以下命令来完成:

stop-hbase.sh

2. 修改 hbase-site.xml 配置文件

打开 HBase 的配置文件 hbase-site.xml,通常位于 $HBASE_HOME/conf 目录下。在 <configuration> 标签内添加以下配置:

<property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
</property>

这个配置指定了 HBase 使用文件系统作为 WAL(Write-Ahead Logging)的提供者,这有助于解决与 Hadoop 3.3.0 的兼容性问题。

3. 重启 HBase 集群

修改配置后,重新启动 HBase 集群:

start-hbase.sh

4. 验证

启动 HBase Shell 并尝试再次使用 list 命令查看表。能够看到所有的表而不再遇到 ServerNotRunningYetException 错误。

结论

通过简单的配置更改,可以解决 HBase 2.4.3 与 Hadoop 3.3.0 之间的兼容性问题。主要是WAL日志不再依赖HDFS作为存储,解决了这部分的兼容问题。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐