2016-01-07 17 views

risposta

14

È un po 'non-intuitivo, ma si scopre il comando hdfs getconf è in grado di controllare le proprietà di configurazione per filati e MapReduce, non solo 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 

Un vantaggio dell'utilizzo di questo è che si vedrà il reale, i risultati finali di qualsiasi proprietà di configurazione come vengono effettivamente utilizzati per Hadoop. Questo spiegherebbe alcuni dei modelli di configurazione più avanzate, come l'uso di XInclude nei file XML o sostituzioni di proprietà, in questo modo:

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

Qualsiasi approccio di scripting che tenta di analizzare direttamente i file XML è improbabile che con precisione abbinare l'implementazione come avviene all'interno di Hadoop, quindi è meglio chiedere a Hadoop stessa.

Ci si potrebbe chiedere perché un comando hdfs può ottenere le proprietà di configurazione per YARN e MapReduce. Ottima domanda! È in qualche modo una coincidenza dell'implementazione che deve iniettare un'istanza di MapReduce JobConf in alcuni oggetti creati tramite reflection. Il codice in questione è visibile qui:

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

Questo codice viene eseguito come parte di eseguire il comando hdfs getconf. Attivando un riferimento a JobConf, forza il caricamento della classe e l'inizializzazione statica delle classi MapReduce e YARN pertinenti che aggiungono yarn-default.xml, yarn-site.xml, mapred-default.xml e mapred-site.xml al set di file di configurazione in vigore.

Poiché è una coincidenza dell'implementazione, è possibile che alcuni di questi comportamenti cambieranno nelle versioni future, ma sarebbe un cambiamento incompatibile con le versioni precedenti, quindi non cambieremmo questo comportamento all'interno dell'attuale Hadoop 2. x linea. La politica Apache Hadoop Compatibility si impegna a retrocompatibilità all'interno di una linea di versione principale, quindi è possibile attendersi che continui a funzionare almeno all'interno della riga di versione 2.x.

+0

funziona come un fascino :) –

+0

funziona ancora. grazie per la condivisione. –

Problemi correlati