web-dev-qa-db-ja.com

HDFSがリッスンしているポート番号を見つける

次のような完全修飾名でhdfsにアクセスしたい:

hadoop fs -ls hdfs://machine-name:8020/user

また、単にhdfsにアクセスすることもできます

hadoop fs -ls /user

ただし、さまざまなディストリビューション(HDP、Cloudera、MapR ...など)で機能するはずのテストケースを作成しています。これには、修飾名を持つhdfsファイルへのアクセスが含まれます。

hdfs://machine-name:8020がcore-site.xmlでfs.default.nameとして定義されていることを理解しています。しかし、これはディストリビューションによって異なるようです。たとえば、hdfsはMapRのmaprfsです。 IBM BigInsightsには、core-site.xml$HADOOP_HOME/confもありません。

Hadoopがfs.default.nameで定義されていることをコマンドラインオプションで教えてくれる方法はないようです。

コマンドラインからfs.default.nameで定義された値を確実に取得するにはどうすればよいですか?

テストは常にnamenodeで実行されるため、マシン名は簡単です。しかし、ポート番号(8020)を取得するのは少し難しいです。 lsof、netstat ..を試しましたが、まだ信頼できる方法が見つかりませんでした。

24
ernesto

Apache hadoop 2.7.0以降で使用可能なコマンドの下で、これはhadoop設定プロパティの値を取得するために使用できます。 fs.default.nameはhadoop 2.0で廃止され、fs.defaultFSは更新された値です。これがmaprfsの場合に機能するかどうかはわかりません。

hdfs getconf -confKey fs.defaultFS  # ( new property ) 

または

hdfs getconf -confKey fs.default.name    # ( old property ) 

Maprまたはhadoop 0.20 hadoopバージョンで構成プロパティ値を取得するために使用できるコマンドラインユーティリティがあるかどうかはわかりません。この状況の場合、構成プロパティに対応する値を取得するためにJavaで同じことを試してください。

Configuration hadoop conf = Configuration.getConf();
System.out.println(conf.get("fs.default.name"));
45
SachinJ

fs.default.nameは非推奨です。

つかいます : hdfs getconf -confKey fs.defaultFS

10
vijayinani

HDFS URIを探していたときに、この答えに出会いました。通常、それはnamenodeを指すURLです。 hdfs getconf -confKey fs.defaultFSはネームサービスの名前を取得しますが、HDFS URIの作成には役立ちません。

代わりにネームノードのリストを取得するために以下のコマンドを試しました

 hdfs getconf -namenodes

これにより、プライマリノード、セカンダリノードの順にすべてのネームノードのリストが表示されました。その後、HDFS URIの構築は簡単でした

hdfs://<primarynamenode>/
3
terpinator

使用できます

hdfs getconf -confKey fs.default.name
0
Shubham Sharma