0

我正在关注 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 的 master 快死了。所以我访问了主日志,发现抛出了这个异常

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)

我不想重复每个人发布此类问题时的后缀,我是新手,请帮助:) 但我真的是新手,做了我必须做的事情,找不到答案,任何指针将不胜感激.

4

2 回答 2

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 现在已经很古老了。

希望这能回答你的问题。

于 2013-06-23T23:27:48.800 回答
0

虽然,我的问题解决了,将jar hadoop-core-0.20.205复制到hbase的lib目录下,如果有hbase经验的人能评论一下就好了。想听有经验的回答

于 2013-06-23T22:09:58.540 回答