我正在尝试建立一个基于Hadoop的分布式Hbase,在我的Ubuntu 20.04上有一个名称节点,在localhost上有三个数据节点和两个虚拟机。当我启动Hadoop和Hbase时,一切都很顺利,名称节点上的jps信息:
44499 DataNode
44291 NameNode
45012 ResourceManager
45380 NodeManager
40408 QuorumPeerMain
46521 HRegionServer
44748 SecondaryNameNode
46188 HMaster
48733 Jps
数据节点上的jps信息:
3968 QuorumPeerMain
5155 Jps
4980 HRegionServer
4782 NodeManager
4638 DataNode
但当我尝试hbaseshell并想使用"list"查看表时,错误信息显示hbase实际上并没有成功启动。。。
hbase(main):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:2923)
at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:1182)
at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:393)
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 8.6983 seconds
在日志中,我发现了错误:
2021-01-12 09:33:40,124 INFO [main-SendThread(pro2:2181)] zookeeper.ClientCnxn: Opening socket connection to server pro2/192.168.122.113:2181. Will not attempt to authenticate using SASL (unknown error)
经过搜索,我认为问题可能出在动物园管理员身上,所以我去看了zk日志,但没有发现任何错误,这让我很困扰。
这是我的hbase-site.xml:
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://jyy-lenovo-legion:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>jyy-lenovo-legion,pro1,pro2</value>
</property>
<!--
property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property
-->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
还有我的zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zkData
clientPort=2181
server.1=pro1:2888:3888
server.2=pro2:2888:3888
我对Hbase、Hadoop等还很陌生。有人能找出问题所在吗?提前感谢!:(
尝试使用较旧版本的Hadoop、Hbase和JDK 8。示例:
- Hadoop:2.10.x
- Hbase:1.6.x
- JDK 8
您可以从这个链接中找到Hadoop和Hbase版本的兼容性
之后,如果有任何错误,你可以尝试这个命令:
find$HBASE_HOME/-type f-name'htrace core*'-ls
如果您从该命令中看到两个结果,请删除一个并重新启动Hadoop、Hbase。谢谢
您可以尝试删除bhase下的slf4j-log4j12-1.7.25.jar
并关闭Hadoop的安全模式。您可以执行(hdfs dfsadmin -safemode leave
(命令关闭,然后重新启动hbase