2016-07-06 1 views
2

я выполнил следующую команду: hadoop -version на Hadoop версии 1.2.1hadoop -version дает мне неправильный результат, почему? Hadoop 1.2.1

[email protected]:~$ hadoop -version 
java version "1.7.0_79" 
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.12.04.1) 
OpenJDK Server VM (build 24.79-b02, mixed mode)

Я ожидал Hadoop версии, но я получил версию JDK установлен на моей системе. Я знаю, что правильная команда hadoop version[без дефиса], но вместо получения ошибки я получил версию JDK, почему?

+0

Для меня работает 2.6.0 i get 'Ошибка: не найдено ни одной команды с именем -version. Возможно, вы имели в виду версию «хаоп». Что вы получите, если просто введите 'hadoop'? –

+0

Я использую hadoop 1.2.1, и я получаю этот результат – Vishrant

ответ

2

Похоже, что сценарий hadoop для 1.2.x имеет гораздо меньшую проверку, чем более поздние версии, на данный момент (2016) его около 3 лет. Вы можете увидеть источник для него here.

В 1.2.x сценарии, если вы наберете hadoop -version сценарий попал в окончательный else заявление, в котором он работает, какой класс для запуска и устанавливает $CLASS в $COMMAND (строка 338) вместо класса.

Вы можете увидеть, что она будет работать на линии 434:

exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "[email protected]"

Итак, если вы наберете hadoop version он будет работать (удален путь к классам вещей, чтобы держать его коротким):

java -Dproc_version -Xmx1000m -classpath <LIBS> org.apache.hadoop.util.VersionInfo

Если вы наберете hadoop -version, вы получите:

java -Dproc_-version -Xmx1000m -classpath <LIBS> -version

Так потому, что поведение по умолчанию для установки $CLASS к $COMMAND вы в основном в конечном итоге это работает:

java -version

Что, что вы получаете.