HBase 0.92 Автономный на Windows с Cygwin
Кто-нибудь знает учебник, как HBase может быть запущен в 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/
5 ответов
У меня была та же проблема, и я обнаружил следующее: Cygwin использует ":" в качестве разделителя пути. Но скрипт, который создает CLASS_PATH, работает некорректно. Final CLASS_PATH выглядит как "...: zookeeper.jar:" с ":" в конце. Перед запуском java-скрипта конвертируем CLASS_PATH в стиль Windows. Но с ":" в конце!!
Поэтому мое решение таково: просто создайте пустой файл "zzz.jar" в hbase / lib. zzz.jar будет самым последним в CLASS_PATH, а zookeeper.jar будет правильно добавлен в CLASS_PATH.
Я знаю, что лучше исправить скрипт, но мне все равно:) Мне нужен HBase только на 2 дня, так что он работает, и я счастлив:)
За JAVA_HOME
ошибка, вы можете исправить это, установив JAVA_HOME
в hbase\conf\hbase-env.sh
,
Для класса не найден исключение, попробуйте добавить 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/
Используйте виртуальную машину для запуска hadoop в среде Linux. С Java вы можете столкнуться с проблемами, типичными для Windows, добавление Cygwin к миксу добавляет совершенно другой набор, например:
- пробелы в пути включения
- несколько установок java из разных приложений (например, плагинов для браузера) могут испортить согласованность переменных CLASSPATH, JAVA_HOME и PATH
- проблемы пути к синтаксису сценария оболочки
В учебных целях я настоятельно рекомендую демонстрационную виртуальную машину cloudera и учебное руководство: https://ccp.cloudera.com/display/SUPPORT/Cloudera%27s+Hadoop+Demo+VM
hbase_classpath
не нужно, просто поменяй zookeeper.jar
в azookeeper.jar
РЕДАКТИРОВАТЬ:
Первая ошибка выглядит так, как будто Java не обнаружена, но вторая ошибка явно исходит от Java, поэтому сочетание этих двух ошибок несколько сбивает с толку. Вы уверены, что они оба производятся одним и тем же сценарием в одно и то же время?
Вторая ошибка вызвана отсутствием файла jar zookeeper на пути к классам. Попробуйте изменить скрипт или скопировать jar-файл в директорию hadoop lib.