Hbase master无法启动异常Java.Lang.NoSuchMethodException

时间:2013-06-23 21:42:32

标签: hadoop hbase hdfs

我正在关注Lars George Hbase权威指南。我正在我的Mountain Lion Macbook pro上设置伪分布式集群。我下载了Hadoop存档0.20.205.0,解压缩并进行了一些小改动

dfs.replication=1

和其他人。当我在hbase-site.xml中进行更改以在

中指定localhost hdfs namenode时
hbase.rootdir=hdfs://localhost:9000/hbase

和其他一些属性,如

zookeeperquorum, zookeeperdataDir, isDistributed=true

等等。

但是,在运行时

bin/start-hbase.sh

我无法在60010访问webui。在运行时,jps,我注意到hbase的主人快死了。所以我访问了主日志,发现抛出了这个异常

2629 2013-06-23 14:22:43,694 WARN org.apache.hadoop.hbase.util.FSUtils: Unable to create version file at hdfs://localhost:9000/hbase, retrying: java.io.IOException: java.lang.NoSuchMethodException: org.apache.hadoop.hdfs.protocol.Client     Protocol.create(java.lang.String, org.apache.hadoop.fs.permission.FsPermission, java.lang.String, boolean, boolean, short, long)
2630     at java.lang.Class.getMethod(Class.java:1607)
2631     at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557)
2632     at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
2633     at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
2634     at java.security.AccessController.doPrivileged(Native Method)
2635     at javax.security.auth.Subject.doAs(Subject.java:396)
2636     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
2637     at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

我不想重复大家在发布这些问题时的后缀,我是新手请帮助:)但我真的是新手做了我必须做的事情,无法找到答案,任何指针都会非常感谢。

2 个答案:

答案 0 :(得分:2)

当你在伪(或完全)分布式模式下使用HBase时,它对hadoop库有一些依赖性(比如RPC版本可能因协议的变化而改变)。这就是你在Hase / lib文件夹中需要适当的Hadoop jar的原因。

由于这些依赖关系,每个版本的HBase都与其lib目录下的Hadoop jar实例捆绑在一起。可能是捆绑的Hadoop是在HBase发布时由某个分支制作的,这与您目前使用的不同。 For example,你使用的是hbase-0.94.7,与hadoop-0.20.205相比是最新的。这就是为什么,群集上的Hadoop版本与您的HBase版本所需的版本相匹配至关重要。

另外,我建议您使用Hadoop和HBase的最新稳定版本以避免这些问题。 0.20.205现在非常古老。

希望这能回答你的问题。

答案 1 :(得分:0)

虽然,我的问题已经解决,但是将jar的hadoop-core-0.20.205复制到hbase的lib目录中,如果有hbase经验的人可以对此进行评论,那就太棒了。我想听听经验丰富的答案