api/web-services を介してリモート Hadoop クラスターのバージョンを特定するにはどうすればよいですか? つまり、クラスターが 1.x タイプか 2.x タイプか? 同じために利用できる API/Web サービスはありますか?
私はwebhdfsを研究しましたか?hadoop ファイルシステムですが、それを行う方法を特定できませんでしたか?
sshのLinuxコマンドを調べますか。そのクラスターのユーザー名とパスワードを持っていますか。Hadoop のバージョンを取得したら、次のコマンドを実行します。
ssh ユーザー名@cluseterip Hadoop バージョン
次に、リモートマシンのパスワードにパスワードを要求し、バージョンを提供します。
例:: Hadoop 1.1.2
Ambariがインストールされている場合(多くのクラスター、特に HDP ベースのクラスター) に GET を実行することで、クラスターのバージョン情報を取得できます'http://your.ambari.server/api/v1/clusters'
。結果の 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
それを行う1つの方法は、例外を特定することです(多かれ少なかれヒット&トライアルメソッド):
クライアントで 1.x API を使用し、2.x Hadoop クラスターまたはその逆に接続する場合:
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 クラスターのバージョンを識別するための絶対メソッドを取得できないことを示しています。