2016-01-07 5 views

Antwort

14

Es ist ein bisschen nicht intuitiv tun, aber es stellt sich heraus, den hdfs getconf Befehl zur Überprüfung Konfigurationseigenschaften für GARN fähig ist und MapReduce, nicht nur HDFS.

> 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 

Ein Vorteil dieses zu verwenden, ist, dass Sie die tatsächlichen, endgültigen Ergebnisse von Konfigurationseigenschaften sehen werden, wie sie von Hadoop tatsächlich verwendet werden. Dies würde für einige der erweiterten Konfigurationsmuster erklären, wie die Verwendung von XInclude in den XML-Dateien oder Eigenschaft Substitutionen, wie folgt aus:

<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> 

Jede Scripting Ansatz, der die XML-Dateien direkt unwahrscheinlich zu analysieren versucht, ist genau zu Passen Sie die Implementierung so an, wie sie in Hadoop ausgeführt wird. Daher ist es besser, Hadoop selbst zu fragen.

Sie wundern sich vielleicht, warum ein hdfs Befehl Konfigurationseigenschaften für YARN und MapReduce erhalten kann. Gute Frage! Es ist ein Zufall, dass die Implementierung eine Instanz von MapReduce JobConf in einige Objekte, die über Reflektion erstellt wurden, einfügen muss. Der entsprechende Code ist hier sichtbar:

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

Dieser Code als Teil der Ausführung des hdfs getconf Befehl ausgeführt wird. Durch das Auslösen eines Verweises auf JobConf erzwingt es das Laden von Klassen und die statische Initialisierung der relevanten MapReduce- und YARN-Klassen, die yarn-default.xml, yarn-site.xml, mapred-default.xml und mapred-site.xml zu set hinzufügen Konfigurationsdateien in Kraft.

Da es ein Zufall der Implementierung ist, ist es möglich, dass sich dieses Verhalten in zukünftigen Versionen ändert, aber es wäre eine rückwärtskompatible Änderung, also würden wir dieses Verhalten im aktuellen Hadoop 2 definitiv nicht ändern. x Linie. Die Apache Hadoop Compatibility Richtlinie verpflichtet sich zur Abwärtskompatibilität innerhalb einer Hauptversionszeile, so dass Sie darauf vertrauen können, dass dies mindestens innerhalb der 2.x Versionszeile weiter funktioniert.

+0

funktioniert wie ein Charme :) –

+0

funktioniert immer noch. danke für das Teilen. –

Verwandte Themen