我跟随拉尔斯·乔治·赫巴斯的权威指南。我正在山狮macbookpro上建立一个伪分布式集群,我下载了hadooparchive0.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。跑步时,我注意到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条答案
按热度按时间xcitsw881#
虽然,我的问题解决了,将jar hadoop-core-0.20.205复制到hbase的lib目录中,但是如果有hbase方面的经验的人能对这个做些评论就太好了。我想听一个有经验的回答
1dkrff032#
当您在伪(或完全)分布式模式下使用hbase时,它对hadoop库有一些依赖关系(比如rpc版本可能会因为协议的更改而更改)。这就是为什么在hase/lib文件夹中需要合适的hadoopjar。
由于这些依赖关系,每个版本的hbase都会在lib目录下捆绑一个hadoopjar示例。可能捆绑的hadoop是在hbase发布时从某个分支生成的,这与您目前使用的不同。
For example,
您使用的是hbase-0.94.7,它是hadoop-0.20.205的最新版本。这就是为什么,集群上的hadoop版本必须与hbase版本相匹配。另外,为了避免这些问题,我建议您同时使用hadoop和hbase的最新稳定版本。0.20.205现在已经很古老了。
希望这能回答你的问题。