我正在关注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)
我不想重复大家在发布这些问题时的后缀,我是新手请帮助:)但我真的是新手做了我必须做的事情,无法找到答案,任何指针都会非常感谢。
答案 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经验的人可以对此进行评论,那就太棒了。我想听听经验丰富的答案