我执行了以下命令: hadoop -version
on hadoop version 1.2.1
vishrant@ubuntu:~$ 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)
看起来hadoop
的{{1}}脚本比最新版本的检查要少得多,此时(2016年)约为3年。您可以看到它的来源here。
在1.2.x
脚本中,如果您键入1.2.x
,脚本将点击最终的hadoop -version
语句,在该语句中输出要运行的类,并将else
设置为{{1} }(第338行)而不是类。
你可以看到它将在第434行运行:
$CLASS
因此,如果您键入$COMMAND
,它将会运行(删除了类路径的东西以保持简短):
exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
如果您输入hadoop version
,则会获得:
java -Dproc_version -Xmx1000m -classpath <LIBS> org.apache.hadoop.util.VersionInfo
因为默认行为是将hadoop -version
设置为java -Dproc_-version -Xmx1000m -classpath <LIBS> -version
,您基本上最终会运行它:
$CLASS
这就是你得到的。