2012-06-07 34 views
8

有谁知道教程如何在Cygwin下的Windows上运行HBase吗?HBase 0.92在Windows上与Cygwin独立运行

我设法建立的一切,如键为自动登录使用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/ 
+0

你是否得到任何“java -version”的输出? – Kiran

+0

是的 - 它的工作原理! –

回答

0

编辑:

的第一个错误看起来像Java不被发现,但第二个错误明显是从Java的到来,所以这两种错误的组合是有点混乱。你确定它们是同时由同一个脚本生成吗?

第二个错误是由于classpath上没有zookeeper jar文件造成的。尝试修改脚本或将jar复制到hadoop lib目录中。

+0

它是独立模式 - 没有HBase用户 –

+0

如果没有找到Java,如何得到类未找到错误? JAVA_HOME错误是否过时? –

+0

使用./start-hbase启动时调用hbase-config.sh - hbase-config创建输出 –

1

使用VM在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

+0

感谢您的评论 - 我已经在Linux和虚拟机上运行了HBase/Hadoop。 实际上对于开发我使用本地VM。我只是想摆脱虚拟机的额外层。 –

4

对于JAVA_HOME错误,你可以通过在hbase\conf\hbase-env.sh设置JAVA_HOME修复它。

对于没有发现异常的类,请尝试在相同文件下将hbase\lib添加到HBASE_CLASSPATH

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

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

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

有这个相同的问题(win7与cygwin),并修复它。迄今为止没有CP错误。 – gbegley

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天,所以它的工作,我很高兴:)

+0

非常感谢!在cygwin中,HBase 0.94.7对我来说工作得很好,我只需要在Hisham的答案中提到的lib文件夹中设置HBASE_CLASSPATH即可。然而,当我最近在0.94.16后回到它时,修复程序似乎不再起作用,但是您的zzz.jar完美地实现了这个诀窍。 –

+0

非常感谢你!这是事情! – Thomas

0

hbase_classpath是不需要,只是改变zookeeper.jarazookeeper.jar