识别远程Hadoop集群的版本

时间:2014-04-17 08:54:07

标签: hadoop webhdfs

如何通过api / web-services识别远程Hadoop集群的版本?即群集是1.x型还是2.x型?有没有可用的API /网络服务?

我研究过webhdfs? hadoop文件系统,但无法确定如何做到这一点?

3 个答案:

答案 0 :(得分:0)

这样做的一种方法是通过识别异常(或多或少的命中和试验方法):

如果在客户端使用1.x API&通过以下方式连接到2.x Hadoop Cluster或vicecersa:

    final String uri = "hdfs://remoteHostName:9000/user/myusername";
    final FileSystem fs = FileSystem.get (URI.create (uri), conf);

然后我们得到以下异常

Exception in thread "main" org.apache.hadoop.ipc.RemoteException: Server IPC version 9 cannot communicate with client version 4

上述异常标识了客户端API&远程Hadoop集群不兼容,但无法获得识别远程Hadoop集群版本的绝对方法。

答案 1 :(得分:0)

如果安装了Ambari(将会有多个群集,尤其是那些基于HDP的群集),您可以通过对'http://your.ambari.server/api/v1/clusters'进行GET获取群集版本信息。生成的JSON将包含如下内容:

{ "href" : "http://your.ambari.server/api/v1/clusters",
   "items" : [
      {  "href" : "http://your.ambari.server/api/v1/clusters/c1",
         "Clusters" : { "cluster_name" : "c1",
                        "version" : "HDP-1.2.0"  }  }
   ]
}

完整的API参考可在以下位置找到: https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/index.md

此电话的具体内容如下: https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/clusters.md

Cloudera似乎有一些至少相似的东西,虽然我不知道它是否得到了Ambari的支持: http://cloudera.github.io/cm_api/apidocs/v1/path__clusters.html

答案 2 :(得分:0)

你是否熟悉ssh的linux命令?您是否拥有该群集的用户名和密码? 然后在获得hadoop版本后执行命令。

ssh username @ cluseterip hadoop version

然后它将询问远程机器的密码给出密码,它会给出版本。

示例:: Hadoop 1.1.2