8

有人知道如何在 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/
4

5 回答 5

5

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

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

我知道修复脚本更好,但我在乎 :) 我只需要 2 天的 HBase,所以它可以工作,我很高兴 :)

于 2013-11-14T15:11:58.567 回答
4

对于JAVA_HOME错误,您可以通过JAVA_HOMEhbase\conf\hbase-env.sh.

对于找不到类的异常,请尝试将 添加hbase\libHBASE_CLASSPATH同一文件下。

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

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

export HBASE_CLASSPATH=/cygdrive/c/programs/hbase-0.92.1/lib/
于 2012-08-09T11:05:11.667 回答
1

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

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

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

于 2012-06-14T19:56:33.760 回答
0

编辑:

第一个错误看起来像是找不到Java,但第二个错误显然来自Java,因此这两个错误的组合有些混乱。你确定它们都是由同一个脚本同时制作的吗?

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

于 2012-06-11T15:58:46.147 回答
0

hbase_classpath不需要,只需更改zookeeper.jarazookeeper.jar

于 2014-03-12T08:41:51.053 回答