我执行了以下命令: hadoop -version
在hadoop版本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的版本为什么?
1条答案
按热度按时间sdnqo3pr1#
看起来像是
hadoop
脚本1.2.x
与较新版本相比,它的检查次数要少得多,目前(2016年)已经有3年的历史了。你可以在这里看到它的来源。在
1.2.x
如果您键入脚本hadoop -version
剧本将进入决赛else
语句,它计算出要运行和设置的类$CLASS
至$COMMAND
(第338行)而不是类。您可以在第434行看到它将运行什么:
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
至$COMMAND
你基本上是以它的运行结束的:java -version
这就是你得到的。