HBase 0.92在Windows上使用Cygwin独立
有没有人知道在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/
我有同样的问题,我发现以下内容: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天,所以它很有效,我很高兴:)
对于JAVA_HOME
错误,您可以通过在hbase\conf\hbase-env.sh
设置JAVA_HOME
来修复它。
对于未找到类的exception,请尝试将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/
使用VM在Linux环境中运行hadoop。 使用Java,您可能会遇到Windows下的典型问题,将Cygwin添加到混合中会添加另一组,例如:
- 包含路径中的空格
- 来自不同应用程序(例如浏览器插件)的多个java安装可能会破坏CLASSPATH,JAVA_HOME和PATH变量的一致性
- shell脚本路径/语法问题
出于教学目的,我强烈推荐 cloudera 演示VM和教程 : https ://ccp.cloudera.com/display/SUPPORT/Cloudera%27s+Hadoop+Demo+VM
https://ccp.cloudera.com/display/SUPPORT/Hadoop+Tutorial#HadoopTutorial-Purpose
编辑:
第一个错误看起来似乎没有找到Java,但第二个错误显然来自Java,因此这两个错误的组合有点令人困惑。 你确定它们都是由同一个脚本同时生成的吗?
第二个错误是由于没有类路径上的zookeeper jar文件引起的。 尝试修改脚本或将jar复制到hadoop lib目录中。
hbase_classpath
,只需将zookeeper.jar
更改为azookeeper.jar