HBase 0.92在Windows上使用Cygwin独立

时间:2012-06-07 17:36:39

标签: java cygwin hbase

有没有人知道在Cygwin下如何在Windows上运行HBase的教程?

我设法设置了所有内容,例如使用SSH自动登录的密钥,但我遇到了以下错误消息:

localhost: +======================================================================+
localhost: |      Error: JAVA_HOME is not set and Java could not be found         |
localhost: +----------------------------------------------------------------------+
localhost: | Please download the latest Sun JDK from the Sun Java web site        |
localhost: |       > http://java.sun.com/javase/downloads/ <                      |
localhost: |                                                                      |
localhost: | HBase requires Java 1.6 or later.                                    |
localhost: | NOTE: This script will find Sun Java whether you install using the   |
localhost: |       binary or the RPM based installer.                             |
localhost: +======================================================================+

...

java.lang.NoClassDefFoundError: org/apache/zookeeper/KeeperException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.zookeeper.KeeperException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)

我已经将.bash_profile设置为指向:

export JAVA_HOME='/usr/lib/jre1.6.1'

这是真正的jre上的符号链接

/usr/lib/jre1.6.1 -> /cygdrive/c/Java/jre7/

5 个答案:

答案 0 :(得分:5)

我有同样的问题,我发现以下内容: Cygwin使用“:”作为路径分隔符。 但是创建CLASS_PATH的脚本工作不正常。最终的CLASS_PATH看起来像 “......:zookeeper.jar:”最后带有“:”。在运行java脚本之前将CLASS_PATH转换为Windows样式。但最后用“:”!!

所以我的解决方案是:只需在hbase / lib下创建一个空文件“zzz.jar”。 zzz.jar将是CLASS_PATH中的最后一个,zookeeper.jar将正确添加到CLASS_PATH。

我知道修复脚本更好,但我关心:) 我只需要HBase 2天,所以它有效,我很高兴:)

答案 1 :(得分:4)

对于JAVA_HOME错误,您可以通过在JAVA_HOME中设置hbase\conf\hbase-env.sh来解决此错误。

对于未找到类的例外,请尝试将hbase\lib添加到同一文件下的HBASE_CLASSPATH

就个人而言,我在Windows 7环境+ Cygwin的hbase-env.sh中使用以下两行:

export JAVA_HOME=/cygdrive/c/Program\ Files/Java/jdk1.7.0/

export HBASE_CLASSPATH=/cygdrive/c/programs/hbase-0.92.1/lib/

答案 2 :(得分:1)

使用VM在Linux环境中运行hadoop。使用Java,您可能会面临Windows下的典型问题,将Cygwin添加到混合中会添加另一组,例如:

出于教学目的,我强烈推荐 cloudera 演示虚拟机和教程https://ccp.cloudera.com/display/SUPPORT/Cloudera%27s+Hadoop+Demo+VM

https://ccp.cloudera.com/display/SUPPORT/Hadoop+Tutorial#HadoopTutorial-Purpose

答案 3 :(得分:0)

编辑:

第一个错误看起来似乎没有找到Java,但第二个错误显然来自Java,因此这两个错误的组合有点令人困惑。你确定它们同时由同一个脚本生成吗?

第二个错误是由于类路径上没有zookeeper jar文件引起的。尝试修改脚本或将jar复制到hadoop lib目录。

答案 4 :(得分:0)

hbase_classpath不需要,只需将zookeeper.jar更改为azookeeper.jar

即可