2015-04-21 15 views
5

Sto eseguendo un processo Pig che non riesce a connettersi al server della cronologia dei lavori Hadoop.Pig continua a tentare di connettersi al server della cronologia dei lavori (e non riesce)

Il compito (in genere qualsiasi operazione con GROUP BY) corre per un po 'e poi si inizia con un messaggio del tipo:

2015-04-21 19:05:22,825 [main] INFO org.apache.hadoop.mapred.ClientServiceDelegate - Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 
2015-04-21 19:05:26,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 
2015-04-21 19:05:29,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 

Si prosegue poi per un nuovo tentativo mentre la connessione. A volte precede ulteriormente con il lavoro. Othertimes si genera questa eccezione:

2015-04-21 19:05:55,822 [main] WARN org.apache.pig.tools.pigstats.mapreduce.MRJobStats - Unable to get job counters 
java.io.IOException: java.io.IOException: java.net.NoRouteToHostException: No Route to Host from cluster-01/10.10.10.11 to 0.0.0.0:10020 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost 
    at org.apache.pig.backend.hadoop.executionengine.shims.HadoopShims.getCounters(HadoopShims.java:132) 
    at org.apache.pig.tools.pigstats.mapreduce.MRJobStats.addCounters(MRJobStats.java:284) 
    at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.addSuccessJobStats(MRPigStatsUtil.java:235) 
    at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.accumulateStats(MRPigStatsUtil.java:165) 
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:360) 
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:280) 

Ho trovato questa domanda here ma nel mio caso viene avviato il server della cronologia dei lavori. Se corro netstat, trovo:

tcp  0  0 0.0.0.0:10020   0.0.0.0:*    LISTEN  12073/java  off (0.00/0/0) 

Dove 12073 è ...

12073 pts/4 Sl  0:07 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Dproc_historyserver -Xmx1000m -Djava.library.path=/data/hadoop/hadoop/lib -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop-2.3.0/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/data/hadoop/hadoop-2.3.0 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop/logs -Dhadoop.log.file=mapred-hadoop-historyserver-cluster-01.log -Dhadoop.root.logger=INFO,RFA -Dmapred.jobsummary.logger=INFO,JSA -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer 

ho cercato di aprire la porta 10200 nel caso in cui si trattava di un problema di firewall:

ACCEPT  tcp -- anywhere    anywhere    tcp dpt:10020 

. .. ma senza fortuna.

Dopo alcuni minuti, alcune delle attività continuano arbitrariamente alla parte successiva.

Sto usando Hadoop 2.3 e Pig 0.14.

La mia domanda è:

1) Quali sono i possibili motivi per cui maiale non può connettersi al server della cronologia dei lavori (JHS) dato che il JHS è in esecuzione sulla stessa porta Pig lo cerca?

... o, in mancanza ...

2) Esiste un modo per dire solo Pig di smettere di cercare di connettersi al JHS e continuare con il compito?

risposta

5

Sembra che la maggior parte delle guide di installazione/configurazione di Hadoop trascurino di menzionare la configurazione del Job History Server. Sembra che Pig, in particolare, si affidi a questo server. Sembra anche che le impostazioni predefinite (locali) per JHS non funzionino in un cluster multi-nodo.

La soluzione era aggiungere il nome host del server nella configurazione in mapred-site.xml per assicurarsi che potesse essere accesso da altre macchine. (Nella mia versione del file, le linee dovevano essere aggiunto come "nuovo" ... non c'erano impostazioni precedenti.)

<property> 
    <name>mapreduce.jobhistory.address</name> 
    <value>cm:10020</value> 
    <description>Host and port for Job History Server (default 0.0.0.0:10020)</description> 
</property> 

quindi riavviare il server cronologia dei lavori:

mr-jobhistory-daemon.sh stop historyserver 
mr-jobhistory-daemon.sh start historyserver 

Se si ottiene un'eccezione di bind (porta in uso), significa che lo stop non ha funzionato. In entrambi i

  1. Usa ps ax | grep -e JobHistory per ottenere il processo e uccidere manualmente con kill -9 [pid]. Quindi chiama di nuovo il comando start sopra.O

  2. utilizzare una porta diversa nella configurazione

Pig dovrebbe raccogliere le nuove impostazioni automaticamente. Esegui un copione di maiale e spera per il meglio. server di storia

1

partenza in Hadoop bin utilizzando il seguente comando

bin$ ./mr-jobhistory-daemon.sh start historyserver 

maiale di esecuzione utilizzando il seguente comando

$pig