2016-01-07 2 views
7

EMRでは、yarnコマンドを使用して設定キーが指定された構成の特定の値を取得する方法はありますか?例えばコマンドラインからヤーン構成を取得する

私はそれは少し非直感的だが、それはHDFSだけでなく、hdfs getconfコマンドはYARNとMapReduceのための構成プロパティを確認することができ判明この

yarn get-config yarn.scheduler.maximum-allocation-mb 

答えて

14

ような何かをしたいと思います。

> hdfs getconf -confKey fs.defaultFS 
hdfs://localhost:19000 

> hdfs getconf -confKey dfs.namenode.name.dir 
file:///Users/chris/hadoop-deploy-trunk/data/dfs/name 

> hdfs getconf -confKey yarn.resourcemanager.address 
0.0.0.0:8032 

> hdfs getconf -confKey mapreduce.framework.name 
yarn 

これを使用する利点は、実際にHadoopで使用されている構成プロパティの最終結果が実際に表示されることです。これは、このようなXMLファイルまたはプロパティの置換でのXIncludeの使用など、より高度な設定パターンの一部を占めるになります。

<property> 
    <description>The address of the applications manager interface in the RM.</description> 
    <name>yarn.resourcemanager.address</name> 
    <value>${yarn.resourcemanager.hostname}:8032</value> 
    </property> 

直接XMLファイルを解析しようとする任意のスクリプトのアプローチは、正確にはほとんどありません実装はHadoopの内部で行われるように実装されているので、Hadoop自体に尋ねる方がよいでしょう。

hdfsコマンドがYARNとMapReduceの設定プロパティを取得できる理由が不思議に思えるかもしれません。素晴らしい質問!リフレクションによって作成されたオブジェクトにMapReduceのJobConfのインスタンスを挿入する必要がある実装は、やや偶然です。関連するコードは、ここに表示されている:

https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java#L82-L114

このコードはhdfs getconfコマンドを実行の一部として実行されます。 JobConfへの参照をトリガーすることによって、クラスロードと、関連するMapReduceクラスとYARNクラスの静的初期化が強制され、yarn-default.xml、yarn-site.xml、mapred-default.xml、およびmapred-site.xmlが設定ファイルは有効です。

実装の偶然なので、この動作のいくつかは将来のバージョンで変更される可能性がありますが、後方互換性のない変更になる可能性があるため、現在のHadoop 2ではその動作を変更しません。 x線。 Apache Hadoop Compatibilityポリシーは、メジャーバージョンライン内の下位互換性をコミットするため、少なくともバージョン2.xのバージョンラインではこれが動作することを信頼できます。

+0

は、チャームのように機能します。 –

+0

はまだ動作します。共有してくれてありがとう。 –

関連する問題