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 к миксу добавляет совершенно другой набор, например:

В учебных целях я настоятельно рекомендую демонстрационную виртуальную машину cloudera и учебное руководство: https://ccp.cloudera.com/display/SUPPORT/Cloudera%27s+Hadoop+Demo+VM

https://ccp.cloudera.com/display/SUPPORT/Hadoop+Tutorial

hbase_classpath не нужно, просто поменяй zookeeper.jar в azookeeper.jar

РЕДАКТИРОВАТЬ:

Первая ошибка выглядит так, как будто Java не обнаружена, но вторая ошибка явно исходит от Java, поэтому сочетание этих двух ошибок несколько сбивает с толку. Вы уверены, что они оба производятся одним и тем же сценарием в одно и то же время?

Вторая ошибка вызвана отсутствием файла jar zookeeper на пути к классам. Попробуйте изменить скрипт или скопировать jar-файл в директорию hadoop lib.

Другие вопросы по тегам