我试图通过运行HMaster类来启动IDEA中的HBase,但是我收到了这个错误:
java.lang.RuntimeException: Failed suppression of fs shutdown hook: Thread[Thread-8,5,main]
at org.apache.hadoop.hbase.regionserver.ShutdownHook.suppressHdfsShutdownHook(ShutdownHook.java:196)
at org.apache.hadoop.hbase.regionserver.ShutdownHook.install(ShutdownHook.java:83)
at org.apache.hadoop.hbase.util.JVMClusterUtil.startup(JVMClusterUtil.java:191)
at org.apache.hadoop.hbase.LocalHBaseCluster.startup(LocalHBaseCluster.java:420)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:104)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2100)
FYI / etc / hosts文件仅包含
127.0.0.1 - 机器名称
这是core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ubuntu/Desktop/hdfs/tmp</value>
</property>
</configuration>
和
HBase的-site.xml中
<configuration>
<property>
<name>hbase.rootdir</name>
<value>/usr/lib/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/lib/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
</configuration>
答案 0 :(得分:0)
我遇到了类似的问题,但是在独立模式下。以下是我解决问题的方法:
"hostname"
和&#34;主机名-f&#34;的输出,确保
输出命令&#34;主机名&#34;只包含主机名
&#34;主机名-f&#34;包含FQDN。如果没有,请先解决此问题。sudo bin/start-hbase.sh
&#34; 我仍然不知道此问题的根本原因,但在我采取上述步骤后,Hbase实例正在运行。希望它有所帮助!
答案 1 :(得分:0)
当针对Hadoop 1编译的HBase在类路径上具有Hadoop 2 jar时,会发生此错误。进入这种情况的一种方法是将Hadoop罐子转储到lib /文件夹中,另一种方法是使用外部工具将这些罐子放在系统的类路径上,HBase会将其取出。
这很容易验证,只需运行bin/hbase classpath
即可将其打印出来。
在独立模式下,或者当Zookeeper由HBase管理时,它也会在日志的开头打印在这样的行上:
INFO org.apache.zookeeper.server.ZooKeeperServer: Server environment:java.class.path=
通过删除Hadoop 2罐解决。
答案 2 :(得分:0)
这是一个简单的错误。这很容易验证,只需运行bin / hbase类路径,它就会将其打印出来。如果存在hadoop2,那么它将无法在独立模式下工作。所以删除那些或tar那些文件夹位置然后尝试。
答案 3 :(得分:-1)
在版本0.98的bin / hbase中,有一个标志 HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP
设置以下环境变量对我有用。
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true