我正在编写一个Spark程序,它根据maven运行的环境从maven下载不同的jar,每个jar用于不同版本的Hadoop发行版(例如CDH,HDP,MapR)。
这是必要的,因为HDFS和YARN的一些低级API在这些发行版之间不共享。但是,我找不到任何 HDFS 和 YARN 的公共 API 来告诉他们的版本。
是否可以只在Java中执行此操作?还是我必须运行外部外壳才能知道它?
In Java org.apache.hadoop.util.VersionInfo.getVersion() 应该可以工作。
https://hadoop.apache.org/docs/current/api/org/apache/hadoop/util/VersionInfo.html
对于 CLI,您可以使用:
$ hadoop version
$ hdfs version
$ yarn version