一、错误描述
网上查这个错误几乎都是说是因为Hadoop是处于安全模式,用命令退出即可
但是我的并没有作用,如果你的虚拟机有这种情况,可以看一下我的解决方法
hbase:001:0> list
TABLE
ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2722)
at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:1198)
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)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
For usage try 'help "list"'
Took 13.7534 seconds
二、解决过程
首先要注意你的启动和关闭过程,先启动Hadoop再启动Hbase
关闭的时候相反
下面看我整个的过程来,排查一下自己会在哪里出现问题
1)先启动hadoop
start-all.sh
查看进程:
打开网页,看那个安全模式是否是关闭状态:如果显示为ON 则要关闭安全模式
2)再启动HBase
start-hbase.sh
再查看Hbase是否启动成功,可以用jps命令看,有三个H开头的启动起来了
虚拟机浏览器查看:
3)Hbase进入shell命令
输入
hbase shell
然后输入list命令报错,这里尝试了非常多的方式,查看配置、重装Hbase等等,折腾了很久
最后在一篇博客中找到了一个可能的原因:
他Hbase的日志打印是这样的,并且他说删除了Hbase的这个slf4j-log4j12-1.7.25.ja
包,重启以后就可以用了
SLF4J: Found binding in [jar:file:/home/xy/Downloads/hadoop-3.3.0/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/xy/Downloads/hbase-2.3.2/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
这个日志是说发现这个绑定slf4j-log4j12-1.7.25.jar
包的问题
我认为是Hadoop和Hbase的这个jar包出现了冲突
那就在Hbase中找到这个jar,删掉即可
4)删除日志jar包
先退出这个模式 exit
然后:
进入usr/local/hbase-2.3.2/lib/client-facing-thirdparty/
目录,看有没有这个jar包:slf4j-log4j12-1.7.30.jar
注意这个路径是你的hbase的安装路径
有的话将slf4j-log4j12-1.7.30.jar
包移除:
进入hbase-2.3.2/conf/hbase-env.sh
中,添加一句命令:
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true
重新启动hdfs、hbase,问题解决
5)关闭重启
关闭:
- 关 HBASE:可以用 stop-hbase.sh,不过可能关不掉,就直接 kill 掉三个 H 开头的进程。
- 关 Hadoop:stop-all.sh Ps:一定要先 HBASE 再关 Hadoop,不然 Hadoop 会进入安全模式
我用stop-hbase.sh关不掉Hbase,所以我是直接kill进程:
然后再关Hadoop
用jps查看只剩下这个进程,证明关闭成功
然后再按照前面的步骤重启就可以了
问题解决!
如果文章对你有帮助,不要忘了给我点个赞吼( ̄▽ ̄)~
欢迎关注我的微信公众号:松鼠技术站