解决 HBase Shell 启动时的 ServerNotRunningYetException 错误
在使用 HBase 时,可能会遇到启动 HBase Shell 并尝试列出表时出现的错误。本文将介绍如何通过修改配置文件来解决这个问题,确保 HBase 2.4.3 与 Hadoop 3.3.0 的兼容性。
概述
在使用 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作为存储,解决了这部分的兼容问题。
更多推荐
所有评论(0)