如何通过api / web-services识别远程Hadoop集群的版本?即群集是1.x型还是2.x型?有没有可用的API /网络服务?
我研究过webhdfs? hadoop文件系统,但无法确定如何做到这一点?
答案 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