2014-09-10 14 views
7

Ho un cluster a 4 nodi (1 NameNode/Resource Manager 3 datanodes/gestori dei nodi)FILATO Maestro applicazione in grado di connettersi a Resource Manager

Sto cercando di eseguire un semplice esempio tez orderedWordCount

hadoop jar C:\HDP\tez-0.4.0.2.1.1.0-1621\tez-mapreduce-examples-0.4.0.2.1.1.0-1621.jar orderedwordcount sample/test.txt /sample/out 

il lavoro viene accettato, il maestro di applicazione e il contenitore diventa messa a punto ma sul NodeManager vedo questi registri

2014-09-10 17: 53: 31.982 INFO [ServiceThread: org.apache.tez.da g.app.rm.TaskSchedulerEventHandler] org.apache.hadoop.yarn.client.RMProxy: Collegamento a ResourceManager a /0.0.0.0:8030

2014-09-10 17: 53: 34.060 INFO [ServiceThread : org.apache.tez.dag.app.rm.TaskSchedulerEventHandler] org.apache.hadoop.ipc.Client: Nuovo tentativo di connessione al server: 0.0.0.0/0.0.0.0:8030. Già provato 0 volte (s); riprovare politica è RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, sleepTime = 1000 MILLISECONDI)

Dopo timeout configurabile il lavoro non viene

Ho cercato per questo problema ed è sempre puntato yarn.resourcemanager.scheduler.address configurazione. In tutti i miei gestore delle risorse di nodo e nodo manager ho questa configurazione definita correttamente, ma per qualche motivo la sua non è stato scelto su

<property> 
<name>yarn.resourcemanager.hostname</name> 
<value>10.234.225.69</value> 
</property> 
<property> 
<name>yarn.resourcemanager.address</name> 
<value>${yarn.resourcemanager.hostname}:8032</value> 
</property> 
<property> 
<name>yarn.resourcemanager.webapp.address</name> 
<value>${yarn.resourcemanager.hostname}:8088</value> 
</property> 
<property> 
<name>yarn.resourcemanager.scheduler.address</name> 
<value>${yarn.resourcemanager.hostname}:8030</value> 
</property> 
<property> 
<name>yarn.resourcemanager.resource-tracker.address</name> 
<value>${yarn.resourcemanager.hostname}:8031</value> 
</property> 
<property> 
<name>yarn.resourcemanager.admin.address</name> 
<value>${yarn.resourcemanager.hostname}:8033</value> 
</property> 

risposta

0

È perché il gestore delle risorse non è raggiungibile. Prova a eseguire il ping del tuo gestore risorse da altri nodi e vedere se funziona. Mantenere queste configurazioni coerenti tra i cluster.

6

Potrebbe essere possibile che il vostro ResourceManager è in ascolto su una porta IPv6, mentre i nodi dei lavoratori (cioè NodeManagers) potrebbero utilizzare IPv4 per la connessione al ResourceManager

Per verificare rapidamente se questo è il caso, fare un

Se si ottiene qualcosa di simile a :::8030, il ResourceManager sta effettivamente ascoltando su una porta IPv6. Se è una porta IPv4, dovresti vedere qualcosa di simile a 0.0.0.0:8030

Per risolvere questo problema, potresti prendere in considerazione la disattivazione di IPv6 su tutte le tue macchine e riprovare.

0

Esiste un problema nel codice Hadoop2 con la configurazione del es yarn.resourcemanager.scheduler.address:

<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>qadoop-nn001.apsalar.com:8030</value> 
</property> 

momento non è correttamente inserito nella configurazione 'conf' a hadoop-2.7.0 /src/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java

Per provare il problema, abbiamo riparato file per iniettare direttamente il nostro indirizzo dello scheduler. La patch qui sotto è un hack. La causa principale è con l'oggetto "conf" che deve caricare la proprietà "yarn.resourcemanager.scheduler.address".

@Private 
protected static <T> T createRMProxy(final Configuration configuration, final Class<T> protocol, RMProxy instance) throws IOException { 
    YarnConfiguration conf = (configuration instanceof YarnConfiguration) 
     ? (YarnConfiguration) configuration 
     : new YarnConfiguration(configuration); 
    LOG.info("LEE: changing the conf to include yarn.resourcemanager.scheduler.address at 10.1.26.1"); 
    conf.set("yarn.resourcemanager.scheduler.address", "10.1.26.1"); 
    RetryPolicy retryPolicy = createRetryPolicy(conf); 
    if (HAUtil.isHAEnabled(conf)) { 
     RMFailoverProxyProvider<T> provider = 
      instance.createRMFailoverProxyProvider(conf, protocol); 
     return (T) RetryProxy.create(protocol, provider, retryPolicy); 
    } else { 
     InetSocketAddress rmAddress = instance.getRMAddress(conf, protocol); 
     LOG.info("LEE: Connecting to ResourceManager at " + rmAddress); 
     T proxy = RMProxy.<T>getProxy(conf, protocol, rmAddress); 
     return (T) RetryProxy.create(protocol, proxy, retryPolicy); 
    } 
} 

MODIFICA: abbiamo risolto questo problema aggiungendo yarn-site.xml al CLASSPATH. non è necessario modificare RMProxy.java

Problemi correlati